SQL Server通过将列映射为键值对来取消激活数据

时间:2018-04-07 16:29:51

标签: sql sql-server unpivot

我需要映射两列中的值以映射值 -

需要完成原始数据的屏幕截图UnPivot: enter image description here

实施例 -

S1 S1Date
S2 S2Date
S3 S3Date
S4 S4Date

数据 -

Cricket      2018-04-07 20:45:22.387
FootBall     2018-04-08 20:45:22.387
TableTennis  2018-04-09 20:45:22.387
Badminton    2018-04-10 20:45:22.387

我尝试过unpivot并且不确定如何映射多个列。请协助。

1 个答案:

答案 0 :(得分:4)

我会使用apply执行此操作:

select v.*
from t cross apply
     (values (s1, s1date), (s2, s2date), (s3, s3date), (s4, s4date)) v(col, dte);

unpivot做了一件非常具体的事情 - 我认为甚至不值得学习语法。另一方面,apply是对横向连接的介绍,它非常强大。 Unpivot是开始学习它们的好方法。