首页 > 解决方案 > 如何在 SQL Server 中将行值显示为列值

问题描述

我有一张表,我想将行值显示为列值。

据我所知,PIVOT 功能用于它。

原表结构如下https://ibb.co/MVdsD01

并且所需的表应该像https://ibb.co/Vt704WF

因此,从上面的两个图像中,您可以发现类别、颜色和百分比列值希望按行显示为行值。

标签: sqlsql-server

解决方案


您不需要枢轴,只需使用CASE

SELECT line,
    MAX(CASE WHEN category = 'UT' THEN duration END) AS ut_min,
    MAX(CASE WHEN category = 'UT' THEN percentage END) AS ut_percentage,
    MAX(CASE WHEN category = 'UT' THEN color END) AS ut_color,
    MAX(CASE WHEN category = 'AOOT' THEN duration END) AS aoot_min,
    MAX(CASE WHEN category = 'AOOT' THEN percentage END) AS aoot_percentage,
    MAX(CASE WHEN category = 'AOOT' THEN color END) AS aoot_color
    --, the rest of your columns...
FROM table_name
GROUP BY line
ORDER BY line;

推荐阅读