2014-01-14 3 views
1

나는디스플레이 출력 SQL

+-------+---------+-------------+-------+------+ 
|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| 
+-------+---------+-------------+-------+------+---------+-------------+-------+------+ 

처럼되고 싶어이 출력을 제공

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 

내가 어떻게 할 수있는이 SQL 문을 가지고 이 도움을 얻으면 많은 도움이 될 것입니다. 현재 쿼리를 추정

+0

@Toni 알메이다 덕분하지만 난 같은 스타일 ID를 가진 두 출력이 어떤 도움이 한 줄로 것이라고 표시해야 많이 고맙게 생각합니다 :) – Vince

+0

안녕하세요 빈스, 난 그냥 더 나은 가독성에 대한 귀하의 질문을 편집 한 뭔가 내 편집 잘못되면 변경 사항을 취소하십시오. –

답변

1

는 '클라이언트'와 '수리'에 대한 하나의 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 
+0

@ T 내가 대답 해 줘서 고마워하지만 StyleID 반복됩니다 어떻게 그것을 제거 할 수 있습니까? 이 SN00000 | 30 | 55 | -25 | 고객 | 100 | 55 | 45 | – Vince

+0

@Vince에서 선택 항목 내에서 원하는 열을 지정할 수 있고 지정해야합니다. 나는 게으르다. ... –

+0

@Vince이 질문에 대한 답변이 있으면 받아들이십시오. – CloudyMarble