Я работаю над данными о продажах и хочу знать, купил ли клиент A продукт X у более чем одного поставщика в течение 3 дней, и я работаю только над одной датой Дата подачи заявки
Я не могу найти для него запрос T-Sql Например
SELECT CusName,ProdName,ProvName
FROM table1
WHERE [Claim Date] between Day([Claim Date]) and DATEADD (Day ,-3 , [Claim Date]
Вы можете использовать приведенный ниже код для этого
SELECT t1.CusName,t1.ProdName,t1.ProvName,t2.ProvName
FROM table t1
JOIN table t2 ON t1.CusName=t2.CusName AND t1.ProdName=t2.ProdName
WHERE t1.ProvName!=t2.ProvName
AND ABS(DATEDIFF(day,t1.ClaimDate,t2.ClaimDate)) = 3
Вам нужно иметь предложение и количество поставщиков:
SELECT CusName, COUNT(DISTINCT ProvName) Provider_count
FROM table1
WHERE [Claim Date] between Day([Claim Date]) and DATEADD (Day ,-3 , [Claim Date]
AND ProdName = 'X'
GROUP BY CusName
HAVING COUNT(DISTINCT ProvName) > 1
Обратите внимание, что вам не нужно включать счетчик в предложение select, но он вам нужен в предложении Have.
Предложение WHERE EXISTS
должно работать:
SELECT CusName,ProdName,ProvName
FROM table1 a
WHERE EXISTS (
SELECT 1 FROM table1 b WHERE
b.CusName=a.CusName AND
b.ProdName=a.ProdName AND
b.ProvName!=a.ProvName AND
ABS(DATEDIFF(day,a.ClaimDate,b.ClaimDate))<3
)
Не могли бы вы предоставить образцы данных и отличный результат?