UNPIVOT次のようにテーブル演算子を使用します。
DECLARE @t table (accounting int, research int, sales int, operations int);
INSERT INTO @t VALUES(3, 5, 6, 0);
SELECT dname, cnt
FROM
(
SELECT accounting, research, sales, operations
FROM @t
) t
UNPIVOT
(
cnt FOR dname IN (accounting, research, sales, operations )
) u
UNPIVOTテーブル演算子をサポートしないRDBMSの場合、これを行うための標準のSQLクエリは次のとおりです。
SELECT dname,
CASE dname
WHEN 'accounting' THEN accounting
WHEN 'research' THEN research
WHEN 'sales' THEN sales
WHEN 'operations' THEN operations
END AS cnt
FROM @t
CROSS JOIN
(
SELECT 'accounting' dname
UNION ALL SELECT 'research'
UNION ALL SELECT 'sales'
UNION ALL SELECT 'operations'
) t2
WHERE dname IS NOT NULL