像这样使用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