在查询以下场景时需要您的帮助。表1
Name -ID1 - ID2 - ID3 A1 - NULL - 11 - 12 A2 - 14 - NULL -11
上表需要翻译如下表2
Name - ID A1 - 11 A1 - 12 A2 - 14 A2 - 11
表2是基于表1的输出。不考虑所有空值。最好的方法是什么。有人能帮我问一下怎么做吗。谢谢
ebdffaop1#
您可以使用unpivot:
SELECT name, ID FROM ( SELECT name, ID1, ID2, ID3 FROM table1)p UNPIVOT (ID FOR ID_value IN (ID1, ID2, ID3)) AS unpvt;
这将自动消除空值,并以数据透视格式输出。
1u4esq0p2#
使用 UNION ALL :
UNION ALL
SELECT t.* FROM ( SELECT name, id1 AS id FROM table1 UNION ALL SELECT name, id2 FROM table1 UNION ALL SELECT name, id3 FROM table1 ) t WHERE id IS NOT NULL ORDER BY name;
2条答案
按热度按时间ebdffaop1#
您可以使用unpivot:
这将自动消除空值,并以数据透视格式输出。
1u4esq0p2#
使用
UNION ALL
: