Below is sample data and expected results:
Table1: salesprice
ItemNo Variant SalesCode UnitPrice
A 1 SRP 100
A 2 SRP 200
A 1 WSP 50
A 2 WSP 100
B 1 SRP 300
B 2 SRP 400
B 1 WSP 150
B 2 WSP 200
Query Results:
ItemNo Variant SalesCode(SRP) UnitPrice SalesCode(WSP) UnitPrice
A 1 SRP 100 WSP 50
A 2 SRP 200 WSP 100
B 1 SRP 300 WSP 150
B 2 SRP 400 WSP 200
asked Oct 16, 2014 at 9:07
2 Answers 2
CREATE TABLE #Data
(
ItemNo VARCHAR(10),
Variant INT,
SalesCode VARCHAR(30),
UnitPrice INT
)
GO
INSERT INTO #Data
( ItemNo, Variant, SalesCode, UnitPrice )
VALUES ( 'A', 1, 'SRP', 100 ),
( 'A', 2, 'SRP', 200 ),
( 'A', 1, 'WSP', 50 ),
( 'A', 2, 'WSP', 100 ),
( 'B', 1, 'SRP', 300 ),
( 'B', 2, 'SRP', 400 ),
( 'B', 1, 'WSP', 150 ),
( 'B', 2, 'WSP', 200 )
GO
SELECT ItemNo, Variant, 'SRP' AS SalesCode_SRP,
SUM(CASE SalesCode
WHEN 'SRP' THEN UnitPrice
ELSE 0
END) UnitPrice_SRP, 'WSP' AS SalesCode_WSP,
SUM(CASE SalesCode
WHEN 'WSP' THEN UnitPrice
ELSE 0
END) UnitPrice_WSP
FROM #Data
GROUP BY ItemNo, Variant
GO
DROP TABLE #Data
answered Oct 16, 2014 at 9:28
-
Just needs an ORDER BY ItemNo, Variant to exactly match the desired outputJames Anderson– James Anderson2014年10月16日 10:27:15 +00:00Commented Oct 16, 2014 at 10:27
select d1.*, d2.SalesCode, d2.UnitPrice
from Data d1, Data d2
where d1.Variant = d2.Variant and d1.ItemNo = d2.ItemNo
and d1.SalesCode = 'SRP'
and d2.SalesCode = 'WSP';
lang-sql