单个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来说,滥用递归查询更为通用. (但是,使用联合生成行可以移植到其他数据库) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |