【发布时间】:2021-04-08 10:39:36
【问题描述】:
我有一个结构如下的表:
| ID | UID | C304 | C305 | C304_Value | C305_Value |
|---|---|---|---|---|---|
| 1 | 1225 | 86 | 01 | 15 | 99 |
| 2 | 1226 | 89 | 06 | 10 | 15 |
我希望输出类似于
| ID | UID | Col | Col_Value | Value |
|---|---|---|---|---|
| 1 | 1225 | C304 | 86 | 99 |
| 1 | 1225 | C305 | 89 | 15 |
我尝试过 unpivot,但它会复制每一行的列。
有没有办法做到这一点?
这是我的 SQL:
SELECT UID, Col, Col_Value,
C304_Value, C305_Value
--,*
FROM Input
--Unpivot( Field_Values
-- for field IN ([dfdf])) as PVT
unpivot (
Col_Value
for Col in (C304, C305)
) up
where UID = '1225'
【问题讨论】:
-
请解释逻辑。例如,UID 1226 发生了什么?
-
我刚刚在 where 子句中过滤掉了它
-
那么如何从第二行获取值呢?
-
Value是 other 列的值吗?因此对于col的值为'C304'的行,Col_Value的值是C304_Value的值,Value是C305_Value的值,但当col具有C305? 的值 -
@Larnu - 这是正确的
标签: sql sql-server unpivot