Вы можете использовать это.
-- Sample Data
DECLARE @TBL TABLE (ID INT, ORG1 INT, ORG2 INT, ORG3 INT, ORG4 INT, ORG5 INT)
INSERT INTO @TBL VALUES
(1, 1, 0, 0, 0, 1),
(2, 0, 1, 1, 0, 0),
(3, 0, 0, 1, 0, 1),
(4, 0, 1, 0, 0, 0),
(5, 0, 0, 0, 1, 0),
(6, 1, 0, 0, 1, 0),
(7, 0, 0, 0, 0, 0)
SELECT ID, UNPVT.ORG FROM @TBL
UNPIVOT( VAL FOR ORG IN ([ORG1], [ORG2], [ORG3], [ORG4], [ORG5])) UNPVT
WHERE VAL = 1
Результат:
ID ORG
----------- ------------
1 ORG1
1 ORG5
2 ORG2
2 ORG3
3 ORG3
3 ORG5
4 ORG2
5 ORG4
6 ORG1
6 ORG4
Если есть случаи, когда все столбцы равны «0»
SELECT ID, UNPVT.ORG FROM
(SELECT *,
([ORG1] + [ORG2] + [ORG3] + [ORG4] + [ORG5])^1 AS [None]
FROM @TBL) SRC
UNPIVOT( VAL FOR ORG IN ([ORG1], [ORG2], [ORG3], [ORG4], [ORG5], [None])) UNPVT
WHERE VAL = 1
Результат:
ID ORG
----------- ------------
1 ORG1
1 ORG5
2 ORG2
2 ORG3
3 ORG3
3 ORG5
4 ORG2
5 ORG4
6 ORG1
6 ORG4
7 None