【发布时间】:2020-02-24 19:54:37
【问题描述】:
我需要将一行转换为一列,我从未在这种情况下工作过。
产品
ProdID Price
---------------
111 52.5
111 50.5
112 40
111 65
预期结果:
ProdID Price1 Price2 Price3
------------------------------------
111 52.5 50.5 65
112 40
注意
我不知道同一件商品会有多少价格。有时只有一个,有时是 2 或 5 个。
因此,它必须创建列。
我看到很多帖子只转换了确切的列,而不是像我的场景这样的动态列。
【问题讨论】:
-
您需要一个类似于here 描述的动态 SQL 查询
-
@Nick 在我的例子中,列名是
Price1, Price2, Price3。非静态列 -
您可以与
GROUP_CONCAT亲密接触。例如:SELECT ProdID, Prices AS GROUP_CONCAT(Price, ',') FROM Product GROUP BY ProdID -
@AjahnCharles 我搜索
GROUP_CONCAT。我不想那样。您的结果将显示在单列中。但这是我了解Group_concat的好消息,谢谢 -
@Liamneesan
GROUP_CONCAT是 MySQL,而不是 SQL Server。
标签: sql sql-server pivot