表结构
有两列
Col1 Col2
数据
a 11
a 12
b 23
b 67
我的里面的数据都是上面这样Col1有两个重复的,
现在我想这样取数据出来
Col1, col2 as c1,col2 as c2
即将两行数据并成一行,
取出来的数据像是
a 11 12
b 23 67
请问SQl语句怎样写?
...全文
3412打赏收藏
求一Sql语句,由列到行转换的问题
表结构 有两列 Col1 Col2 数据 a 11 a 12 b 23 b 67 我的里面的数据都是上面这样Col1有两个重复的, 现在我想这样取数据出来 Col1, col2 as c1,col2 as c2 即将两行数据并成一行, 取出来的数据像是 a 11 12 b 23 67 请问SQl语句怎样写?
谢谢各位,我的是这样解决的:
上面的表
select ANo,BNo from (
select rownum as Rn,Tb.Col2 as ANo,Ta.Col2 as BNo
from Table Tb left join Table Ta
on Ta.Col1=Tb.Col1 where Ta.id is not null and Tb.Col1 <> Ta.Col2 order by Ta.Col1
) where mod(Rn,2)=1
你还在线吗?我在公司,机器上没有装Oracle。我有一个想法啊,但没有办法试!你能配合一下吗?
第一,你先从你表中选取ROWNUM,告诉我ROWNUM是从0开始的连续的数,还是从1开始的连续的数?
SQL> select rownum from table_name;
第二,如果是从1开始连续的值,请在where 的后面加上条件:
SQL>select rownum from table_name
where rownum=2*rownum-1 ;
如果是从0开始的连续的值,请在where的后面加上条件:
SQL>select rownum from table_name
where rownum=2*(rownum+1)-1
select col1,max(decode(rm,1,col2)) c1,max(decode(rm,2,col2)) c2 from
(select col1,col2,row_number() over(partition by col1 order by rownum) rm from table_name)
where rm<=2
group by col1