[英]After joining two queries (each having different columns) with UNION I'm getting only one column
[英]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.