Самостоятельно соединить таблицу и суммировать один и тот же столбец с разницей 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;