sql - 将一些列转置为行

标签 sql sql-server transpose

我知道以前也有人问过类似的问题。然而我没有成功地做我需要做的事情。所以我才问你。

我有一个表,其中包含 client_ID 以及购买与每个客户相对应的不同产品类别的一些概率。

Client_ID | Prob_CategoryA | Prob_CategoryB | Prob_CategoryC

     1                 0.2                  0.3                    0.2
     2                 0.4                  0.6                    0.7
     3                 0.3                  0.7                    0.4

现在我想做的就是将上面的表格转换成这样。

Client_ID | Category Name |  Probability

   1                A               0.2
   1                B               0.3 
   1                C               0.2
   2                A               0.4
   2                B               0.6
   2                C               0.7
   3                A               0.3
   3                B               0.7
   3                C               0.4

非常感谢

最佳答案

简单的 UNPIVOT:

SELECT Client_Id, SUBSTRING(Cat, 14, 1) [Category Name], Probability
FROM Src
UNPIVOT (Probability FOR Cat IN (Prob_CategoryA, Prob_CategoryB, Prob_CategoryC)) UP

结果

Client_Id   Category Name Probability
----------- ------------- -----------
1           A             0.2
1           B             0.3
1           C             0.2
2           A             0.4
2           B             0.6
2           C             0.7
3           A             0.3
3           B             0.7
3           C             0.4

关于sql - 将一些列转置为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510042/

相关文章:

SQL:在行或其他表中定义的日期范围之间求和销售额

mysql - JOIN引起的重复

java - SQL异常: Unexpected token for UcanaccessConnection.准备语句

sql-server - 在 SQL Server 中插入随机数

mysql - 限制计数,其余为 "Others"

SQL 表行到列 - 可能的 PIVOT?

sql-server - 在 T SQL 中查找两个日期之间的日期

python - 根据条件为自定义列分配值

google-sheets - Google 表格 - 将不规则的列数据分组转置为行

c++ - 为什么我的代码给我一个分段/核心转储错误?