我有一個由ClientID,ActionDate,Action和Result組成的表。MS SQL如何選擇最後N個記錄相同的客戶端
我需要選擇具有特定日期範圍內的特定操作/結果組合的不同客戶端。
舉例說明:
- 我需要不同的clientId,其最近5動作/結果是呼叫/無應答。
- 我需要在過去30天內只有Call/NoAnswer的獨特clientID。
感謝
我有一個由ClientID,ActionDate,Action和Result組成的表。MS SQL如何選擇最後N個記錄相同的客戶端
我需要選擇具有特定日期範圍內的特定操作/結果組合的不同客戶端。
舉例說明:
感謝
1.
select ClientID from
(
select
ClientID,
Action,
Result,
row_number() over (partition by ClientID order by ActionDate desc) as num
from ClientActions
) T -- the latest 5 action/result
where rnum <= 5
group by ClientID
having MAX(case when Action='Call' and Result = 'NoAnswer' then 0 else 1 end) = 0
2.
select ClientID
from ClientActions
where DATEDIFF(DAY, ActionDate, GETDATE()) <= 30
group by ClientID
having MAX(case when Action='Call' and Result = 'NoAnswer' then 0 else 1 end) = 0
你試過這麼遠嗎? – 2015-03-31 12:27:35
表的主鍵是什麼?此外,最後5包括或不包括這? – 2015-03-31 12:34:52
我有麻煩設置「Where」子句。如果我將其設置爲特定的操作/結果,它只會計算這些操作。我應該建立的查詢邏輯並沒有在我的腦海中清理。 也許有幾個子選擇,它們會選擇Top1,Top2-Top1,Top3-(Top2-top1)等,它們應該都是相同的。我相信有更優雅的方式,但我太新手了,能夠弄清楚。 – Peraklo 2015-03-31 12:39:48