我有一张这样的表:
╔════════╦═══╦═══╦═══╦═══╦═══╗
║ row_id ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║
╠════════╬═══╬═══╬═══╬═══╬═══╣
║ 1 ║ T ║ E ║ S ║ N ║ U ║
║ 2 ║ M ║ B ║ R ║ H ║ A ║
║ 3 ║ C ║ D ║ F ║ G ║ I ║
║ 4 ║ J ║ K ║ L ║ O ║ P ║
║ 5 ║ V ║ W ║ X ║ Y ║ Z ║
╚════════╩═══╩═══╩═══╩═══╩═══╝
我想" pivot"该表用于获取row_id
列为第一行,1
列为第二行等的结果。
结果应如下所示:
╔════════╦═══╦═══╦═══╦═══╦═══╗
║ row_id ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║
╠════════╬═══╬═══╬═══╬═══╬═══╣
║ 1 ║ T ║ M ║ C ║ J ║ V ║
║ 2 ║ E ║ B ║ D ║ K ║ W ║
║ 3 ║ S ║ R ║ F ║ L ║ X ║
║ 4 ║ N ║ H ║ G ║ O ║ Y ║
║ 5 ║ U ║ A ║ I ║ P ║ Z ║
╚════════╩═══╩═══╩═══╩═══╩═══╝
我在没有聚合的情况下寻找关于透视的想法,但没有太多运气,主要是因为我想要旋转的数据是非数字的。
我已在SQL Fiddle中设置了示例数据。
谢谢!
答案 0 :(得分:1)
你需要什么称为"矩阵换位"。最佳的SQL查询将在很大程度上取决于您存储数据的实际方式,因此如果您提供更实际的表格示例,则不会受到影响。结构体。你确定你需要使用的所有矩阵都是5 * 5吗? :)
UPD:哦,我看到你发现了它。答案 1 :(得分:0)
我意识到我的错误是寻找支点而不是转置。
我找到了答案here并通过以下查询解决了问题:
SELECT *
FROM (SELECT row_id,
col,
value
FROM table1
UNPIVOT ( value
FOR col IN ([1],
[2],
[3],
[4],
[5]) ) unpiv) src
PIVOT ( Max(value)
FOR row_id IN ([1],
[2],
[3],
[4],
[5]) ) piv
结果在 SQL Fiddle 。