Как выбрать все столбцы и счетчик (*) в том же запросе
Часто используют в TSQL следующий запрос:
SELECT COUNT(*), *
FROM CUSTOMER c
WHERE c.Name like 'foo%';
Когда я пытаюсь выполнить этот запрос в Oracle SQL Developer, он не работает и вызывает ошибку:
"Отсутствует выражение"
Каков хороший синтаксис?
Спасибо заранее.
Ответы
Ответ 1
Один из подходов - сделать что-то вроде следующего. Это приведет к результату count (*) для каждой строки. Но будьте осторожны, есть Cartesianjoin; если у вас много строк, таких как "foo%", это будет плохо работать.
select a.cntr, c.*
from CUSTOMER c
, (select count(*) cntr
from customer b
where b.name like 'foo%' ) a
where c.name like 'foo%'
Ответ 2
Это будет лучше:
SELECT COUNT(*) OVER (), c.*
FROM CUSTOMER c
WHERE c.Name like 'foo%';