2015-11-16 54 views
0

我想獲得排的總結果。例如,如果數據庫中有10條記錄,所以輸出應該是10SQL獲取輸出總數

我查詢這種

select COUNT(*) AS NumberRow from 
(SELECT TOP 30 PERCENT [EmpName], sum(Scoring) as GrandTotal 
FROM [masterView] GROUP BY [EmpName] 
ORDER BY GrandTotal DESC,EmpName ASC) 

但有一個錯誤: -

的錯誤是:

Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ')'.

回答

1

你應該別名子查詢:

SELECT COUNT(*) AS NumberRow 
FROM (SELECT TOP 30 PERCENT 
        [EmpName] , 
        SUM(Scoring) AS GrandTotal 
      FROM  [masterView] 
      GROUP BY [EmpName] 
      ORDER BY GrandTotal DESC , 
        EmpName ASC 
     ) t 

您可以使用窗口函數像聚合混合數據:如Giorgi的具有上述

SELECT *, COUNT(*) OVER() AS NumberRow 
FROM (SELECT TOP 30 PERCENT 
        [EmpName] , 
        SUM(Scoring) AS GrandTotal 
      FROM  [masterView] 
      GROUP BY [EmpName] 
      ORDER BY GrandTotal DESC , 
        EmpName ASC 
     ) t 
+0

第一個查詢看起來更加不錯:) +1 –

+0

@RahulTripathi,是的,但再有就是冗餘列將選擇'[EmpName], SUM(評分)AS GrandTotal' –

+0

是的,同意了! :) –

0

別名的事情肯定會工作。但是,如果您的數據庫有10條員工記錄,那麼您的查詢將只返回3條記錄,而不是10條,因爲您選擇的是TOP 30 PERCENT。下面的查詢應該返回10條記錄。

select COUNT(*) AS NumberRow from 
( SELECT [EmpName], sum(Scoring) as GrandTotal 
    FROM [masterView] GROUP BY [EmpName] 
    ORDER BY GrandTotal DESC,EmpName ASC 
)temp