SQL 两行两列显示一行四列或一行两列
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
前言
两行两列显示一行四列
==>转化为
SQL 一对多转为一对一
解决
方法一
select id, (select max(A) || '~' || max(B)
from dual
where id=1) A,
(select min(A) || '~' || min(B)
from dual
where id=1) B
from dual
显示
不想拼接的可以尝试最下边的方法
优点
写在子查询中可以动态传参
缺点
只能针对两行数据 多行不行
方法二
select id,
( select ROW_NUMBER() OVER (partition BY id ORDER BY id desc,price_batch_id desc) AS rid ,d.a|| '~' ||d.b from dual d where rownum=1),
( select ROW_NUMBER() OVER (partition BY id ORDER BY id desc,price_batch_id desc) AS rid ,d.a|| '~' ||d.b from dual d where rownum=2)
from dual
--格式化
select (select ROW_NUMBER() OVER(partition BY id ORDER BY id desc, price_batch_id desc) AS rid,
d.a || '~' || d.b
from dual d
where rownum = 1),
(select ROW_NUMBER() OVER(partition BY id ORDER BY id desc, price_batch_id desc) AS rid,
d.a || '~' || d.b
from dual d
where rownum = 2)
from dual
显示
优点
可以获得多行多列 调整Rownum即可
缺点
不可以动态传参(建议可以创建虚表,关联rid形式传参)