Сохранять агрегированный столбец постоянным в SQL Server? - PullRequest
2 голосов
/ 26 июня 2019

Я пытаюсь подсчитать количество клиентских местоположений, которые равны count > 1, что, кажется, работает нормально, как указано в первом запросе.

select clientID,count(clientlocations)clientcount
from db.schema.table
group by clientid
having count(clientid) > 1

clientid         clientcount

   1                 5
   2                 7
   3                 8

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

select reveneueid,clientID,
count(clientlocations)clientcount
from db.schema.table
group by revenueid,clientid
having count(clientid) > 1

revenueid    clientid     clientcount
   5000          1            4
   6144          1            1
   4651          2            3
   4785          2            1
   8745          2            3
   7869          3            5
   4963          3            3

У клиента может быть несколько «доходов».

Я хочу иметь постоянный счет клиента, аналогично ниже.

Запрошено:

select reveneueid,clientID,
count(clientlocations)clientcount
from db.schema.table
group by revenueid,clientid
having count(clientid) > 1

revenueid    clientid     clientcount
   5000          1           5
   6144          1           5
   4651          2           7
   4785          2           7
   8745          2           7
   7869          3           8
   4963          3           8

Я использую SQL Server 2016.

1 Ответ

2 голосов
/ 26 июня 2019

Вы можете использовать оконную SUM за clientid

select reveneueid,clientID,
  SUM(count(clientlocations)) OVER(PARITION BY clientid) AS clientcount
from db.schema.table
group by revenueid,clientid
having count(clientid) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...