[英]unpivot sql table
I have a table with logid,skilllevel,logskill where Data is like 我有一个带有logid,skilllevel,logskill的表,其中数据就像
logid, skilllevel1, skilllevel2,skilllevel3,logonskill1,logonskill2,logonskill3,
101, 90, 40, 60 1 2 3
102, 30, 20, 10 4 5 6
I want to get it arranged like the following: 我想按以下方式安排它:
logid, skilllevel, logonskill , skillposition
101, 90, 1 1
101, 40, 2 2
102, 30, 4 1
skilllevel1 corresponds to logonskill1 as so on skillposition is the substring of logonskill skilllevel1对应于logonskill1,因此Skillposition是logonskill的子字符串
How can I achieve this? 我该如何实现?
My preferred method is a lateral join, using apply
: 我的首选方法是使用
apply
的横向联接:
select v.*
from t cross apply
(values (logid, skilllevel1, logonskill1, 1),
(logid, skilllevel2, logonskill2, 2),
(logid, skilllevel3, logonskill3, 3)
) v(logid, skilllevel, logonskill, skillposition)
where skilllevel is not null or logonskill is not null;
Lateral joins are very powerful. 横向连接非常强大。 This is just one or many things that you can do with
apply
. 这仅仅是一个或者很多东西,你可以做
apply
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.