Выполните SQL-запрос и в то же время найдите количество возвращенных записей

У меня есть запрос примерно так:

SELECT   YEAR,
         period,
         ROUND(a.NUMERATOR/b.total_sum, 0) avg_val FROM

(Select ... ) subQuery1,
(Select ... ) subQuery2

ORDER BY YEAR, period

Я также хочу знать количество записей, возвращаемых запросом.

Как мне изменить запрос?


person jai    schedule 10.01.2011    source источник
comment
Добавьте новый столбец count(*), чтобы вернуть количество строк, соответствующих вашему запросу (если у вашего провайдера еще нет способа получить количество возвращаемых строк).   -  person Brad Christie    schedule 10.01.2011


Ответы (2)


Я знаю, что в SQL Server, чтобы получить количество строк, затронутых оператором SQL, вы должны вернуть @@rowcount из своего запроса. В Oracle это должно быть что-то похожее, например sql%rowcount, я думаю, согласно этому сообщению: http://www.dbasupport.com/forums/showthread.php?t=20077

Также посмотрите этот пост подсчет после оператора SELECT: каков оптимальный подход к SQL?

person angularrocks.com    schedule 10.01.2011
comment
Это нечто другое. HanuAthena спросила об SELECT, а не об UPDATE. - person Ilya Kogan; 10.01.2011

Допустим, запрос возвращает N строк. Вы хотите, чтобы число N добавлялось в КАЖДУЮ строку?

Я полагаю, что нет. Затем вам понадобится отдельный запрос для возврата количества строк в результатах вашего запроса. Вы можете сделать это следующим образом:

SELECT COUNT(*) FROM
(Select ... ) subQuery1,
(Select ... ) subQuery2

Кстати, между subQuery1 и subQuery2 лучше использовать JOIN, а не просто запятую. JOIN сделает ваш запрос более читаемым.

person Ilya Kogan    schedule 10.01.2011
comment
есть предложение GROUP BY, которое определяет количество записей. Неа. Я не хочу, чтобы число N добавлялось к каждой строке. Я просто хочу COUNT записей, возвращенных при выполнении запроса. - person jai; 10.01.2011
comment
Так что используйте запрос, который я вам дал, вот что он делает. - person Ilya Kogan; 10.01.2011