将每个 ID 的列转换为行 [英] Convert columns into rows for each ID

查看:40
本文介绍了将每个 ID 的列转换为行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张如下所示的表格

I have a table that looks as follows

ID  | value1 | value2 | value3
1   | 5      | 6      | 7
2   | 10     | 11     | 12
3   | 20     | 21     | 22

我需要为每个 ID 的 3 个值列中的每一个创建一行.最终表格应如下所示(列标题不再有意义,但您可以忽略这一点):

I need to create one row for each of the 3 value columns per ID. The final table should look like this (the column headers dont make sense anymore, but you can ignore this):

ID  | value1 | value2
1   | value1 | 5     
1   | value2 | 6     
1   | value3 | 7     
2   | value1 | 10     
2   | value2 | 11    
2   | value3 | 12    
3   | value1 | 20     
3   | value2 | 21    
3   | value3 | 22    

在 TSQL 中解决此问题的最佳方法是什么?

What would be the best way to approach this in TSQL?

推荐答案

你需要反透视数据你可以使用CROSS APPLY

Select Id,cs.name,cs.values_list from yourtable 
cross apply (values ('value1',value1),
                    ('value2',value2),
                    ('value3',value3)) Cs (name,values_list)

这篇关于将每个 ID 的列转换为行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆