我在尝试取消透视下表时遇到了麻烦。
| 操作 | ...其他列... | A1 | B1 | C1 | A2 | B2 | C2 | A3 | B3 | C3 | ... |
变成这样的事情......
| 操作 | ...其他列... | 价值 | B值 | 价值 |
现在我这样做
SELECT operation , ...other columns , Avalue, BValue , CValue
FROM (SELECT operation, ...other columns, A1, B1, C1
FROM MyTable
UNION ALL
SELECT operation, ...other columns, A2, B2, C2
FROM MyTable
UNION ALL
SELECT operation, ...other columns, A3, B3, C3
FROM MyTable
)
问题是我有 30 套 ABC,所以有 30 个工会。我尝试过使用 unpivot,但我无法提出正确的解决方案,这是我第一次尝试使用它。
这是我尝试使用 UNPIVOT
SELECT opration
, ...other columns ...
,AValue
,BValue
,CValue
FROM MyTable
UNPIVOT ( [AValue] FOR XX IN (A1,A2,A3,...,A30)) AS upv1
UNPIVOT ( [BValue] FOR yy IN (B1,B2,B3,...,B30)) AS upv2
UNPIVOT ( [CValue] FOR ZZ IN (C1,C2,C3,...,C30)) AS upv3
问题是我不明白为什么返回数百万行,而预期应该是大约 10k。有任何想法吗?
编辑:我刚刚意识到每个 UNPIVOT 都与导致“数据爆炸”的前一个 unpivot 语句的结果集一起工作。
谢谢