在一行SQL中显示输出

时间:2014-01-14 09:12:40

标签: sql sql-server

我有这个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|
+-------+---------+-------------+-------+------+---------+-------------+-------+------+

如何实现这一目标,我们将非常感谢您的帮助。

1 个答案:

答案 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