簡體   English   中英

如何在SQL Server的一行中選擇不同的計數數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM