仅使用select语句和where子句将列转换为行

时间:2016-01-06 10:01:02

标签: mysql oracle

我有一张这样的表

名称 Preference_1 Preference_2 Preference_3

John India UK USA

输出应该是这样的

名称 Preference_No 位置

John 1 India

John 2 UK

John 3 US

1 个答案:

答案 0 :(得分:1)

您可以使用unionunion all执行此操作:

select Name, '1' AS Preference_No, Preference_1 AS Location from your_table union
select Name, '2' AS Preference_No, Preference_2 AS Location from your_table union
select Name, '3' AS Preference_No, Preference_3 AS Location from your_table union
order by Name

注意:您可以使用union all而不是union获取所有记录,否则重复的内容,但在您的情况下,您不需要使用{{1}因为你选择静态不同的值为Preference_No,所以没有重复的记录。