2013-09-18 1 views
3

Мой запрос выглядит следующим образомВсего количество строк в SQL запросе --- SQL Server 2008

BEGIN 

    WITH MyCTE 
    AS (
     SELECT T.MusicAlbumTitle 
      ,D.musicTitle 
      ,D.mVideoID 
      ,D.musicFileName 
      ,T.ReleaseDate AS ReleasedDate 
      ,D.MusicLength 
      ,D.musicSinger 
      ,D.MusicVideoID 
      ,D.ExternalLink    
      ,D.CoverImg    
      ,ROW_NUMBER() OVER (
       PARTITION BY D.MusicVideoID ORDER BY D.mVideoID 
       ) AS row_num 
     FROM dbo.Music_Video T 
     JOIN dbo.Music_Video_Details D ON T.MusicVideoID = D.MusicVideoID 
     WHERE T.PortalID = @PortalID 
      AND T.CultureCode = @CultureCode 
      AND T.ComingSoon <> 1 
     GROUP BY T.MusicAlbumTitle 
      ,D.musicTitle 
      ,D.mVideoID 
      ,T.ReleaseDate 
      ,D.musicFileName 
      ,D.MusicLength 
      ,D.musicSinger 
      ,D.MusicVideoID 
      ,D.ExternalLink 
      ,D.CoverImg 
     ) 
    SELECT a.mVideoID 
     ,a.MusicVideoID 
     ,a.musicFileName    
     ,a.MusicAlbumTitle 
     ,a.ReleasedDate 
     ,a.row_num 
     ,a.CoverImg 
     ,a.ExternalLink   
     ,a.musicTitle 
     ,a.MusicLength     
    FROM MyCTE a    
    WHERE row_num = 1 
    ORDER BY MusicVideoID DESC 
END 

Мне нужно добиться полного количества строк из последнего оператора выбора. , что означает общее количество строк, которое выбрано.

или любая идея, которая может быть использование в этом состоянии

Как я могу это сделать ..

+1

Используйте 'Select @@ RowCount' он должен вернуть количество строк, возвращаемых из последнего заявления – Nilesh

+0

он не работает .. –

ответ

12

Пожалуйста, добавьте COUNT(*) OVER() в ваш выбор, который возвращает общее количество строк, выбранных в качестве нового столбца. Ex:

SELECT 
    *, 
    COUNT(*) OVER() AS [Total_Rows] 
FROM YourTable 
2

Просто чтобы быть ясно, что вам нужно добавить количество в КТР, а не внешнего запроса. Внешний выбор возвращает только одну строку, поэтому счет всегда будет одним.

СТЕ должен начать:

WITH MyCTE 
AS (
    SELECT T.MusicAlbumTitle 
     ,D.musicTitle 
     ,D.mVideoID 
     ,D.musicFileName 
     ,T.ReleaseDate AS ReleasedDate 
     ,D.MusicLength 
     ,D.musicSinger 
     ,D.MusicVideoID 
     ,D.ExternalLink    
     ,D.CoverImg    
     ,ROW_NUMBER() OVER (
      PARTITION BY D.MusicVideoID ORDER BY D.mVideoID 
      ) AS row_num, 
     COUNT(*) over() as total_count 
Смежные вопросы