В T SQL Как мне добавить столбец count, который подсчитывает количество строк в моем запросе? - PullRequest
0 голосов
/ 30 января 2020

Это можно сделать несколькими способами, которые я объясню в конце. На данный момент мне дано рабочее задание, которое включает следующее (упрощенно):

"Создайте запись каждую неделю для отслеживания текущего статуса, который имеет следующее: номера счетов (уникальные в каждом отчете), случайное число (указано), их статус (зеленый, оранжевый или синий) и убедитесь, что в записи также есть столбец, в котором указано, сколько их записей на этой неделе. "

я делаю не нужен код для генерации случайного числа.

Столбцы: Account, RanNum, Status, NumberOfRowsThisWeek

Как мне обработать добавление столбца, который определяет количество строк в моем запросе, и производит это число, stati c, внутри каждой строки этого столбца?

Я могу попытаться настроить запрос и применить возрастающее число. Как мне go сделать это в этом случае?

Редактировать: SQL Сервер 2014

Ответы [ 2 ]

1 голос
/ 30 января 2020

Вы не сообщаете нам, какую базу данных используете.

На SQL сервере, по крайней мере, в более новых версиях, у вас есть функция управления окнами или аналитические функции, и они также доступны в большинстве других популярных RDBMS

Вы можете сделать то, что вы хотите на SQL Сервере, добавив это к вашему выбору

,count(*) over (partition by 1) as [NrOfRows]

Аналитическая функция выполняет «стандартный» запрос, а затем выполняет функцию управления окнами на набор результатов. Приведенное выше количество подсчитывает строки в наборе результатов, разделенные константой 1, которая, конечно, стабильна во всех строках, поэтому дает полный счетчик строк.

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

,count(*) over (partition by (select 1 n)) as [NrOfRows]
0 голосов
/ 30 января 2020

звучит так, как будто вы хотите сделать какой-то простой подсчет () / сгруппировать по запросу

select Account, RanNum, Status, count(*) as NumberOfRowsThisWeek
from tablename
group by Account, RanNum, Status

вам нужно сделать

select Account, RanNum, Status, NumberOfRowsThisWeek
from (
   select Account, Status, count(*) as NumberOfRowsThisWeek
   from tablename
   group by Account, Status
)

, потому что случайное число будет сбивать с толку группа, сделав каждый ряд уникальным.

...