Можете ли вы объединить два набора результатов в один из разных таблиц? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь объединить результаты двух запросов для авторизатора в один набор результатов для сетки.

SQL-запрос:

SELECT DISTINCT 
    Authoriser, ISNULL(TotalInvoices,0) AS TotalInvoices, 
    ISNULL(TotalRequsitions, 0) AS TotalRequsitions 
FROM 
    (SELECT
         Authoriser AS Authoriser, 
         COUNT(Tiffindex.Page_No) AS TotalInvoices, 
         null AS TotalRequsitions
     FROM  
         Tiffindex
     WHERE 
         Tiffindex.Doc_status = 7 
         AND authoriser != ''
     GROUP BY
         Authoriser
     UNION 
     SELECT
         Authoriser, null, 
         COUNT(RequisitionDetails.UploadTransaction_Id) AS TotalRequsitions 
     FROM
         RequisitionDetails
     WHERE
         RequisitionDetails.Doc_status = 7 AND authoriser != ''
     GROUP BY
         Authoriser) AS secondset

Result Set with multiple rows per Authoriser

Можно ли изменить SQL для объединения результатов в 1 строку Authoriser?

Результат, который я получаю, может выдать 2 строки на одного Авторизатора. Я бы предпочел 1, если это возможно?

Заранее спасибо, Graham

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Я бы порекомендовал агрегировать по авторизатору во внешнем запросе, а затем взять сумму обоих остальных столбцов:

SELECT
    Authoriser,
    SUM(TotalInvoices) AS TotalInvoices,
    SUM(TotalRequsitions) AS TotalRequsitions
FROM
(
    SELECT
        Authoriser As Authoriser,
        COUNT(Page_No) AS TotalInvoices,
        NULL AS TotalRequsitions
    FROM Tiffindex
    WHERE Doc_status = 7 AND authoriser != ''
    GROUP BY Authoriser
    UNION ALL
    SELECT
        Authoriser,
        NULL,
        COUNT(UploadTransaction_Id) AS TotalRequsitions 
    FROM RequisitionDetails
    WHERE Doc_status = 7 AND Authoriser != ''
    GROUP BY Authoriser
) AS secondset
GROUP BY
    Authoriser;
1 голос
/ 08 июля 2019

ВЫ можете попробовать ниже -

SELECT Authoriser, sum(ISNULL(TotalInvoices,0)) AS TotalInvoices, sum(ISNULL(TotalRequsitions,0)) AS TotalRequsitions FROM (
    select Authoriser As Authoriser, Count(Tiffindex.Page_No) as TotalInvoices, null as TotalRequsitions
        from Tiffindex
        where Tiffindex.Doc_status = 7 and authoriser != ''
        group by Authoriser
    UNION 
    select Authoriser, null, Count(RequisitionDetails.UploadTransaction_Id) as TotalRequsitions 
        from RequisitionDetails
        where RequisitionDetails.Doc_status = 7 and authoriser != ''
        group by Authoriser
    ) as secondset group by Authoriser
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...