sql-server - 自联接表和对具有不同条件的同一列求和(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
解决方案
您可以像这样在一个查询中执行此操作.. 加入自我.. 我没有在 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;
推荐阅读
- asp.net-mvc - 如何在表 y 中插入与表 x 0 - 0/1 (x,y) 相关的数据
- bash - 如何在每次提交之前进行差异而不进入交互模式?
- angular - 如何在不同的组件中触发变更检测?
- c# - 是否可以从 Azure Key Vault Keys 中获取私钥?
- css - css 网格:网格间隙 1px 具有不同的列和行大小
- excel - 如果条件为真,则从工作簿中的其他工作表有条件地返回值
- ios - 如何使用模拟器在 XCUITest 中以编程方式清除 NSUserDefaults
- angular - 带有 Laravel 后端的 Angular 应用程序作为 API RESTful Auth 问题
- python - 传播计算结果
- big-o - 用大 o 表示法删除常数是什么意思?