我使用 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
注意:我写这篇文章时没有检查查询。松鼠的回答是最好的。
我有两个 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
注意:我写这篇文章时没有检查查询。松鼠的回答是最好的。