Самостоятельно соединить таблицу и суммировать один и тот же столбец с разницей criterea (SQL Server)

Мне нужна помощь, чтобы показать, как я могу объединить нижеуказанные запросы вместе, а также суммировать результаты для проблем и переносов в новом столбце.

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

Любые идеи или направления для поиска будет принята с благодарностью.

Текущие запросы и результаты:

--30 & 90 day issues query
SELECT 
    Table1.itemnum, SUM(Table1.quantity) AS SumOfquantityIssue
FROM 
    Table1
WHERE 
    Table1.transdate > GETDATE() - 30 
    AND Table1.issuetype = 'ISSUE' 
    AND Table1.gldebitacct IS NOT NULL
    AND Table1.fromstoreloc IN ('WFOWH', 'WFOPY')
GROUP BY 
    Table1.itemnum
ORDER BY 
    Table.itemnum;

Результаты, которые я получаю из этого запроса:

itemnum   SumOfquantityIssue
----------------------------
  1007       -1.00

Второй запрос:

--30 & 90 day transfers query
SELECT 
    Table1.itemnum, SUM(Table1.quantity) AS SumOfquantityTransfer
FROM 
    Table1
WHERE 
    Table1.transdate > GETDATE() - 30 
    AND Table1.issuetype = 'TRANSFER' 
    AND Table1.gldebitacct IS NOT NULL
    AND Table1.fromstoreloc IN ('WFOWH', 'WFOPY')
GROUP BY 
    Table1.itemnum
ORDER BY 
    Table1.itemnum;

Результаты, которые я получаю из этого запроса:

itemnum SumOfquantityTransfer
------------------------------
   1007     1.00
   2347    20.05

Результаты, которые я хочу получить, выглядят так:

Itemnum      SumOfquantityIssue   SumOfquantityTransfer  Total_Sum
-------------------------------------------------------------------
 1007             1.00                -1.00                 0.00
 2347            20.05                 0.00                20.05

1 ответ

Решение

Вы можете сделать это в одном запросе, например, так... присоединиться к себе... я не запускал это в SSMS, чтобы проверить... просто ушел из головы...

    SELECT 
    Table1.itemnum
   , Sum(Table1.quantity) AS SumOfquantityIssue
   , isnull(Sum(Table2.quantity),0) AS SumOfquantityTransfer
   , Sum(Table1.quantity) + isnull(Sum(Table2.quantity),0) as total_sum

    FROM Table1

    LEFT JOIN Table1 as Table2
      ON Table2.itemnum = Table1.itemnum
      AND Table2.issuetype ='TRANSFER' 
      AND Table2.gldebitacct Is Not Null
      AND Table2.fromstoreloc in('WFOWH','WFOPY')
      AND Table2.transdate>getdate()-30 

    WHERE Table1.transdate>getdate()-30 
    AND Table1.issuetype ='ISSUE' 
    AND Table1.gldebitacct Is Not Null
    AND Table1.fromstoreloc in('WFOWH','WFOPY')
    GROUP BY Table1.itemnum
        ORDER BY Table.itemnum;
Другие вопросы по тегам