2015-11-16 6 views
0

Я хотел бы получить итоговый результат строки. Например, если в базе данных есть 10 записей, поэтому выход должен быть 10.SQL Получить общее количество выходных данных

Мой запрос это

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 

Вы можете смешать данные с агрегирование с помощью функции окна, как:

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 (Scoring) AS GrandTotal' –

+0

Да, согласен! :) –

0

Алиас вещь, безусловно, работать как Джорджи упоминалось выше. Но если ваша база данных имеет 10 записей Employees, ваш запрос будет возвращать только 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 
Смежные вопросы