Как выбрать все столбцы и счетчик (*) в том же запросе

Часто используют в 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%';