我有这个sql语句
SELECT STYLERELEASE.StyleID,SUM(STYLERELEASE.Quantity) as [Total rel],
SUM(STYLERECEIVE.Quantity) as [Total Receive],
STYLERELEASE.Quantity - STYLERECEIVE.Quantity AS [Balance],
ToWhom
FROM STYLERELEASE
JOIN STYLERECEIVE
ON STYLERELEASE.ReleaseID = STYLERECEIVE.ReleaseID
AND STYLERELEASE.ToWhom = STYLERECEIVE.FromWhere
WHERE STYLERELEASE.StyleID = 'SN00000'
AND ToWhom = 'Repair'
OR ToWhom = 'Client'
GROUP BY STYLERELEASE.StyleID, STYLERELEASE.Quantity, STYLERECEIVE.Quantity, STYLERELEASE.ToWhom
给出了这个输出
+-------+---------+-------------+-------+------+
|StyleID|Total rel|Total Receive|Balance|Towhom|
+-------+---------+-------------+-------+------+
|SN00000|30 |55 |-25 |Client|
+-------+---------+-------------+-------+------+
|SN00000|100 |55 |45 |Repair|
+-------+---------+-------------+-------+------+
我希望我的输出变得像这样
+-------+---------+-------------+-------+------+---------+-------------+-------+------+
|StyleID|Total rel|Total Receive|Balance|Towhom|Total rel|Total Receive|Balance|Towhom|
+-------+---------+-------------+-------+------+---------+-------------+-------+------+
|SN00000|30 |55 |-25 |Client|100 |55 |45 |Repair|
+-------+---------+-------------+-------+------+---------+-------------+-------+------+
如何实现这一目标,我们将非常感谢您的帮助。
答案 0 :(得分:1)
假设当前查询为“client”和“repair”返回一个styleid
WITH cte AS
(
SELECT STYLERELEASE.StyleID,
SUM(STYLERELEASE.Quantity) as [Total rel],
SUM(STYLERECEIVE.Quantity) as [Total Receive],
STYLERELEASE.Quantity - STYLERECEIVE.Quantity AS [Balance],
ToWhom
FROM STYLERELEASE
JOIN STYLERECEIVE
ON STYLERELEASE.ReleaseID = STYLERECEIVE.ReleaseID
AND STYLERELEASE.ToWhom = STYLERECEIVE.FromWhere
WHERE STYLERELEASE.StyleID = 'SN00000'
AND ToWhom = 'Repair'
OR ToWhom = 'Client'
GROUP BY STYLERELEASE.StyleID, STYLERELEASE.Quantity, STYLERECEIVE.Quantity, STYLERELEASE
)
SELECT *
FROM ( SELECT * FROM cte WHERE ToWhom='Client' ) client
JOIN ( SELECT * FROM cte WHERE ToWhom='Repair' ) repair
ON client.STYLEID = repair.STYLEID