Попытка сравнить элементы в одном столбце T-SQL - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь найти количество запросов на основе клиентов

LookUpID     Customer
1302                 01             
1303                 01
1337                 01

У каждого клиента может быть несколько просмотров, но если у них выбрано 1337, а не 1302 или 1303, вы не можете добавить этоколичество клиентов до *. 1004 *

Количество (случай, когда LookUpID = 1337 и LookUpID не в (1302, 1303), затем 0, когда LookUpID = 1337 и LookUpID в (1302, 1303), затем 1, еще 0, конец)

Я не могу выяснить, как исключить клиентов с LookUpID = 1337, если другие 2 не выбраны.Любой вклад поможет, спасибо.

Ответы [ 3 ]

0 голосов
/ 19 июня 2019

Возможно какой-то вариант этого:

SELECT [Customer]
      ,CASE WHEN MAX([LookUpID]) = 1337 AND  MIN([LookUpID]) = 1337 THEN 0 ELSE COUNT([LookUpID]) END
FROM [table] 
GROUP BY [Customer];

Если значения min и max для конкретной записи равны 1337, у нас есть только одна запись для строки, и мы имеемcount = 0;во всех остальных случаях просто посчитай.

0 голосов
/ 19 июня 2019

Этот код может вам помочь. Если вам нужно посчитать клиента, используйте счетчик t.customer

CREATE TABLE #test(
[lookupid] [int] NULL,
[customer] [varchar](2) NULL
) ON [PRIMARY]
GO
INSERT #test ([lookupid], [customer]) VALUES (1302, N'01')
INSERT #test ([lookupid], [customer]) VALUES (1303, N'01')
INSERT #test ([lookupid], [customer]) VALUES (1337, N'01')
INSERT #test ([lookupid], [customer]) VALUES (1337, N'02')
INSERT #test ([lookupid], [customer]) VALUES (1337, N'03')
INSERT #test ([lookupid], [customer]) VALUES (1303, N'03')

-- select *   from #test

 select r.customer,t.customer,r.lookupid
  from #test r
  left join (select * from #test where lookupid=1337  
            and customer in(select customer from  #test
            where lookupid in(1302,1303)))t on t.customer=r.customer
0 голосов
/ 19 июня 2019

Предполагая, что выбранные записи находятся в таблице SelectedRecords, мы можем сделать это:

SELECT lt.Customer
FROM LookupTable lt
LEFT JOIN SelectedRecords sr ON sr.LookUpID=lt.LookUpID
GROUP BY lt.Customer
HAVING COUNT(*)=COUNT(DISTINCT sr.LookUpID)

Таким образом, мы подсчитываем количество LookUpID-ов каждого клиента и проверяем, если числовыбранные LookUpID-ы одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...