У меня есть два запроса на выборку, объединенные с помощью UNION. Я получаю два результата в одном столбце, как я могу получить его в двух столбцах - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть два запроса на выборку, объединенные с помощью 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) 

Ответы [ 3 ]

2 голосов
/ 17 апреля 2019

Вы можете упростить это в один запрос выбора.Используйте 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 
1 голос
/ 17 апреля 2019

Использовать подзапросы:

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 
0 голосов
/ 17 апреля 2019

Один из вариантов - добавить 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

Примечание: я написал это без проверки запроса. Белка лучше ответит.

...