单个SQL SELECT从一个表行返回多个行

前端之家收集整理的这篇文章主要介绍了单个SQL SELECT从一个表行返回多个行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个表格形式:
ID,Value1,Value2,Value3
1,2,3,4

我们需要将其转化为.

ID,Name,Value
1,'Value1',2
1,'Value2',3
1,'Value3',4

在一个SELECT语句中是否有一种聪明的方法(即没有UNION)?列名称Value1,Value2和Value3是固定且常量的.

数据库是oracle 9i.

解决方法

这适用于Oracle 10g:
select id,'Value' || n as name,case n when 1 then value1 when 2 then value2 when 3 then value3 end as value
from (select rownum n
      from (select 1 from dual connect by level <= 3)) ofs,t

我认为Oracle 9i有递归查询?无论如何,我很确定它有CASE支持,所以即使它没有递归查询,你也可以做“(从双联合中选择1,所有选择2来自双联盟,所有选择3来自双重)”.对于Oracle来说,滥用递归查询更为通用. (但是,使用联合生成行可以移植到其他数据库)

猜你在找的MsSQL相关文章