簡體   English   中英

我有兩個選擇查詢結合使用UNION。 我在一列中得到兩個結果如何在兩列中得到它

[英]I have two select queries combined using UNION. I am getting two results in one column how can I get it in two columns

我有兩個選擇查詢結合使用UNION。 我在一列中得到兩個結果,但我想在兩列中得到它

(SELECT count (*) As ServiceCreatedInOneMonth FROM [workAiderWinNe].[DynamicServiceDataOfClient] WHERE CreateDate > DATEADD(month, -1, GETDATE()) and  CompanyID = 1 ) UNION ALL

(SELECT count (*) As ServiceCompletedInOneMonth FROM [workAiderWinNe].[DynamicServiceDataOfClient] WHERE CreateDate > DATEADD(month, -1, GETDATE()) AND IsCompleted =1 and CompanyID = 1) 

您可以將其簡化為一個選擇查詢。 使用CASE WHEN檢查IsCompleted

SELECT count (*) As ServiceCreatedInOneMonth,
       sum (case when IsCompleted = 1 then 1 else 0 end) As ServiceCompletedInOneMonth 
FROM   [workAiderWinNe].[DynamicServiceDataOfClient] 
WHERE  CreateDate > DATEADD(month, -1, GETDATE()) 
and    CompanyID = 1 

使用子查詢:

SELECT
(SELECT count (*) 
 FROM [workAiderWinNe].[DynamicServiceDataOfClient] 
 WHERE CreateDate > DATEADD(month, -1, GETDATE()) 
 AND CompanyID = 1 ) ServiceCreatedInOneMonth ,
(SELECT count (*) 
 FROM [workAiderWinNe].[DynamicServiceDataOfClient]
 WHERE CreateDate > DATEADD(month, -1, GETDATE()) 
 AND IsCompleted =1 and CompanyID = 1) ServiceCompletedInOneMonth 

一種選擇是增加null as ServiceCompletedInOneMonth的第一個查詢的第二列, null as ServiceCreatedInOneMonth為你的第二個查詢的第一列,然后結合。 請注意,並不需要括號:

    SELECT count (*) As ServiceCreatedInOneMonth,null as ServiceCompletedInOneMonth
    FROM [workAiderWinNe].[DynamicServiceDataOfClient] 
    WHERE CreateDate > DATEADD(month, -1, GETDATE()) and  CompanyID = 1 
UNION ALL
    SELECT null as ServiceCreatedInOneMonth,count (*) As ServiceCompletedInOneMonth 
    FROM [workAiderWinNe].[DynamicServiceDataOfClient] 
    WHERE CreateDate > DATEADD(month, -1, GETDATE()) AND IsCompleted =1 and CompanyID = 1

注意:我編寫此代碼時沒有檢查查詢。 松鼠的答案是最好的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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