加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:25:11 所属栏目:MsSql教程 来源:网络整理
导读:我们有一个表格形式: ID,Value1,Value2,Value31,2,3,4 我们需要将其转化为. ID,Name,Value1,'Value1',21,'Value2',31,'Value3',4 在一个SELECT语句中是否有一种聪明的方法(即没有UNION)?列名称Value1,Value2和Value3是固定且常量的. 该数据库是oracle 9i.
我们有一个表格形式:
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来说,滥用递归查询更为通用. (但是,使用联合生成行可以移植到其他数据库)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读