各ユーザーが「MO1 + M01」というコードを使用して注文したユーザーの最新の最新のodrersを確認し、または365日に等しい。最新の注文日と最新の注文日を比較する
私の下のクエリは、オーバー除外するようだとは値を返しません:
注:電子メールの多くが原因小売アドホック取引にNULLまたは空白のいずれかです。
SELECT DISTINCT oh.[UID Email], c.[Offer], a2.[LatestOrderDate], a2.[OrderCount], b2.[SecondOrderDate], b2.[SecondOrderCount],
DATEDIFF(DAY,a2.[LatestOrderDate],b2.[SecondOrderDate]) Gap_Days
FROM [RBI Order Header] oh
LEFT JOIN
(SELECT DISTINCT [UID Email], [Order Date] [LatestOrderDate], [OrderCount]
FROM (SELECT ROW_NUMBER()
OVER(ORDER BY [Contact Order Count] DESC) AS 'OrderCount',
[UID Email],
[Order Date]
FROM [RBI Order Header]
WHERE [UID Email] LIKE '%@%') a
WHERE OrderCount = 1
GROUP BY [UID Email], [Order Date], [OrderCount]) a2
ON oh.[UID Email] = a2.[UID Email]
LEFT JOIN
(SELECT DISTINCT [UID Email], [Order Date] [SecondOrderDate], [SecondOrderCount]
FROM (SELECT ROW_NUMBER()
OVER(ORDER BY [Contact Order Count] DESC) AS 'SecondOrderCount',
[UID Email],
[Order Date]
FROM [RBI Order Header]
WHERE [UID Email] LIKE '%@%') b
WHERE SecondOrderCount = 2
GROUP BY [UID Email], [Order Date], [SecondOrderCount]) b2
ON oh.[UID Email] = b2.[UID Email]
LEFT JOIN
(SELECT DISTINCT LEFT(dl.[Offer No_],3) [Offer], dl.[Order No_] FROM [Rapha].dbo. [Staging Discount Line] dl
WHERE (dl.[Offer No_] LIKE 'MO1%' OR
dl.[Offer No_] LIKE 'M01%')) c
ON oh.[Posted Document No_]=c.[Order No_] COLLATE Latin1_General_100_CI_AI
WHERE DATEDIFF(DAY,a2.[LatestOrderDate],b2.[SecondOrderDate]) >= 365
GROUP BY oh.[UID Email], a2.[LatestOrderDate], b2.[SecondOrderDate], [Offer], DATEDIFF(DAY,a2.[LatestOrderDate],b2.[SecondOrderDate]), a2.[OrderCount], b2.[SecondOrderCount]
ORDER BY Gap_Days
あなたのクエリを使用する方法を実証するために必要以上の方法より複雑なようだ試してみました。しかし、サンプルデータと望みの結果がなければ、本当に望むものを見つけ出すことはできません。 –