sql - 在 SQL 中将列值重复到行中

标签 sql sql-server pivot rows

我想知道如何将包含重复列值的列转换为 MSSQL 中的行。这是我正在使用的示例。

CREATE TABLE Colors
(
    Time_ Time,
    Color varchar(6),
    count int
)

INSERT INTO Colors VALUES ('10:00', 'Red', 2);
INSERT INTO Colors VALUES ('10:00', 'Orange', 3);
INSERT INTO Colors VALUES ('10:00', 'Yellow', 6);
INSERT INTO Colors VALUES ('10:00', 'Green', 9);
INSERT INTO Colors VALUES ('10:00', 'Blue', 2);
INSERT INTO Colors VALUES ('11:00', 'Red', 3);
INSERT INTO Colors VALUES ('11:00', 'Orange', 4);
INSERT INTO Colors VALUES ('11:00', 'Yellow', 6);
INSERT INTO Colors VALUES ('11:00', 'Green', 7);
INSERT INTO Colors VALUES ('11:00', 'Blue', 1);
INSERT INTO Colors VALUES ('12:00', 'Red', 2);
INSERT INTO Colors VALUES ('12:00', 'Orange', 2);
INSERT INTO Colors VALUES ('12:00', 'Yellow', 7);
INSERT INTO Colors VALUES ('12:00', 'Green', 9);
INSERT INTO Colors VALUES ('12:00', 'Blue', 4);

和 SQLFiddle:http://sqlfiddle.com/#!3/48657/1

我正在寻找一个表,其中行为 Time_、红色、橙色、黄色、绿色、蓝色。所以它看起来像这样:

如有任何帮助,我们将不胜感激。

最佳答案

SELECT  Time_,
        Red, 
        Orange, 
        Yellow, 
        Green, 
        Blue
FROM
    (
        SELECT  Time_, Color, Count
        FROM    Colors
    ) orgData
    PIVOT
    (
        MAX(Count)
        FOR Color IN (Red, Orange, Yellow, Green, Blue)
    ) pvt

关于sql - 在 SQL 中将列值重复到行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990828/

相关文章:

php - Mysql计数并拆分为日、周、年以在同一查询中进行统计

sql - 如何选择过去 X 个月在一周的 X 天插入的结果?

mysql - 仅当链接已存在时才分组 (MySQL)

sql - 从多列中获取最后日期

mysql - MS Access 将查询转换为 MySQL 查询

sql - 在 Oracle 中创建 CTE

c# - 具有外部源的 Entity Framework 6 同步表

sql-server - 我可以使用外键引用 SQL Server View 中的列吗?

mysql - MYSQL 中数据透视表的简单方法是什么

sql - 如何根据 SQL Server 中的值取消透视列和 GROUP BY?