У меня есть проблема, при которой я пытаюсь идентифицировать заказы клиентов, где
- У клиента был заказ в том же месяце год назад и в этом месяце.
- У клиента был заказ год назад в этом месяце, но не в этом месяце
- У клиента был заказ в этом месяце, но не год назад.
Мои данные выглядят так.
CustomerID Month Year Value
1 2 2011 18
1 2 2012 16
2 1 2011 15
3 1 2012 13
Из этого я ожидаю возврата (для каждого критерия выше)
- Строки 1 и 2
- Строка 3
- Строка 4
Я уверен, что для этого должно быть элегантное решение, но сегодня я не вижу его!
Пока что я дошел до этого, но получаюмного дубликатов я упускаю что-то очевидное?
;with t (ID, Yr, Mo)
As
(
Select ID, TransactionYearFK, TransactionMonthFK
From dbo.MyData
)
Select *
From t tC
Full Outer Join t tL On tC.ID = tL.ID And tC.Mo = tL.Mo And tL.Yr = tC.Yr - 1
Where Coalesce(tC.ID, tL.ID) = 21110
Order By tC.Yr, tC.Mo