[英]How to select different count data in one row in sql server
我試圖從具有以下結構的sql服務器上的表中選擇某些數據:
TABLE A
|TYPE_ID| |CT| |DUE_DATE|
現在我需要的輸出是:
|TYPE_ID| |COUNT_TODAY| |COUNT_ONE_WEEK| |COUNT_ONE_MONTH|
如何在一行中選擇所有計數?
我可以在多行中執行此操作,因為在每個行上可以有不同的行,每個行都有自己的where子句來比較日期。
|TYPE_ID| |COUNT| |IS_TODAY| |IS_ONE_MONTH|
我可以通過以下查詢得到這個:
SELECT COUNT(CT),1,0 FROM A WHERE DUE_DATE = GETDATE()
SELECT COUNT(CT),0,1 FROM A WHERE DUE_DATE >= DATEADD(DAY,-7,GETDATE())
但是我需要如上所述的輸出/
您可以使用條件聚合:
select typeid,
sum(case when cast(due_date as date) = cast(getdate() as date) then 1 else 0 end) as today,
sum(case when cast(due_date as date) >= cast(getdate() - 7 as date) then 1 else 0 end) as week,
sum(case when cast(due_date as date) >= dateadd(month, -1, cast(getdate() as date)) then 1 else 0 end) as month
from t
group by typeid;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.