我使用 UNION 组合了两个 select 查询。我在一列中得到两个结果,我怎样才能在两列中得到它

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

我有两个 select 使用 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) 

使用子查询:

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 

您可以将其简化为一个 select 查询。使用 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 

一个选项是将 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

注意:我写这篇文章时没有检查查询。松鼠的回答是最好的。