Вы можете попробовать это.
DECLARE @MyTable TABLE(PO_NUM VARCHAR(10), u_id int, CODE_1 varchar(10), CODE_2 varchar(10), VALUE DECIMAL(18,2))
INSERT INTO @MyTable VALUES
('0M274316', 1, '3', '9;13', 150),
('0N274316', 1, '9', '9', 200000),
('0O274316', 1, '6', '9', 210000),
('0P274316', 1, '6', '13', 21000),
('0Q274316', 1, '6', '9', 50000.5),
('0R274316', 1, '15', '9', 0),
('0M274317', 2, '3', '9;13', 150),
('0N274317', 2, '9', '9', 300000),
('0O274317', 2, '6', '9', 220000),
('0P274317', 2, '6', '13', 22000),
('0Q274317', 2, '6', '8', 90000.5),
('0R274317', 2, '15', '8', 0)
SELECT *, [6] + [9] + [15] + [9;13] + [9(2)] + [13] as total FROM (
SELECT PO_NUM,u_id, CODE + ( CASE WHEN DENSE_RANK() OVER( PARTITION BY CODE ORDER BY C ) > 1 THEN '(' + CAST ( C AS varchar(50)) + ')' ELSE '' END ) CODE, VALUE
FROM (
SELECT MIN(PO_NUM) OVER(PARTITION BY u_id) PO_NUM, u_id, 1 C, CODE_1 CODE, VALUE FROM @MyTable
UNION ALL
SELECT MIN(PO_NUM) OVER(PARTITION BY u_id) PO_NUM, u_id, 2 C, CODE_2 CODE, VALUE from @MyTable
) T
) SRC
PIVOT(SUM(VALUE) FOR CODE IN ( [6], [9], [15], [9;13], [9(2)], [13])) PVT
Результат:
PO_NUM u_id 6 9 15 9;13 9(2) 13 total
---------- ----------- ------------ ----------- --------- --------- ----------- ----------- -------------
0M274316 1 281000.50 200000.00 0.00 150.00 460000.50 21000.00 962151.00
0M274317 2 332000.50 300000.00 0.00 150.00 520000.00 22000.00 1174150.50