Использование синтаксиса SQL Server T-SQL, как вы можете найти все записи в течение последнего месяца транзакции для конкретного клиента?Выделить все записи за последний месяц
Учитывая следующие записи:
CUSTOMER_ID | TRANSACTION_DATE
------------------------------
00001 | 04/21/2013
00001 | 05/01/2013
00001 | 05/14/2013
00002 | 06/08/2013
00002 | 07/01/2013
00002 | 07/28/2013
Выходной сигнал запроса должен выглядеть следующим образом:
CUSTOMER_ID | TRANSACTION_DATE
------------------------------
00001 | 05/01/2013
00001 | 05/14/2013
00002 | 07/01/2013
00002 | 07/28/2013
лучшим, что я придумал такой запрос (не проверено), который выглядит ужасно неэффективно.
select customer_id, transaction_date
from customer_table outer
where concat(month(transaction_date), year(transaction_date)) = (
select concat(month(max(transaction_date)), year(max(transaction_date)))
from customer_table inner
where outer.customer_id = inner.customer_id
)
Concat? В самом деле? –
'WHERE [TRANSACTION_DATE]> = DATEADD (mm, DATEDIFF (mm, 0, GETDATE()) - 1,0) AND [TRANSACTION_DATE]
@ Тит, пожалуйста, не сокращайте - просто укажите его как« МЕСЯЦ ». Чтобы понять, почему, посмотрите, какие 'y' и' w' делают. :-) –