环境:
create table ff(f1 varcahr(10), f2 int);
insert into ff values ('A', round(rand()*100));
insert into ff values ('A', round(rand()*100));
insert into ff values ('A', round(rand()*100));
需要执行一条SQL语句得到一行记录 'A' , '98,44,55'
语句:
set @row:=0;
select tmp.f1, concat(max(tmp.a),',',max(tmp.b),',',max(tmp.c)) as 'all'
from (
select
@row:=@row+1,
f1,
case when @row=1 then f2 else 0 end as a,
case when @row=2 then f2 else 0 end as b,
case when @row=3 then f2 else 0 end as c
from ff group by @row
)
as tmp group by tmp.f1;
思路:
这个是典型的行转列,然后再concat连成字符串
step1: 在表上添加rowId
select @row:=@row+1, f1,f2 from ff;
step2: 对rowId进行分组
select @row:=@row+1, f1,f2 from ff group by @row
step3: 添加以后用来合成的目标列
select @row:=@row+1, f1,0 as a, 0 as b, 0 as c from ff group by @row
step4: 对于rowid=1的分组, a列取f2值, b,c都是0; 对于rowId=2的分组, a,c列取0, b取f2的值... 这里的case when就是行转列的法宝
select
@row:=@row+1,
f1,
case when @row=1 then f2 else 0 end as a,
case when @row=2 then f2 else 0 end as b,
case when @row=3 then f2 else 0 end as c
from ff group by @row
step5: 最后再取max,并且concat
分享到:
相关推荐
1.或许有的人会用id+limit来实现上一条,下一条功能.但是.我们试想一下.有的业务并不是用id来排序的.那这样的方法就没效果...2.现在找到了生成rownum的方法,并且优化了执行速度. 3.直接上我项目里的sql,希望对大家有用.
sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法
在本篇文章里小编给大家分享的是关于mysql类似oracle rownum写法以及相关实例内容,需要的朋友们可以学习下。
用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值
ORACLE 中ROWNUM用法总结 整理版本,详细明了
Oracle中rownum的使用
注意:对 rownum(伪列) 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据 例:查询工资前20名的员工姓名,工资 ,工资由高到低 Select rownum,first_name,salary from (Select first_name, salary ...
oracle 分页查询 使用ROWNUM技巧及陷阱
可如果用 select rownum,c1 from t1 where rownum > 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一些记录,...
oracle rownum和distinct
ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。
仅仅使用select语句就可以完成分页,学习一下rownum 会有用处的
C# Mysql 查询 Rownum的解决方法,需要的朋友可以参考一下
oracle中rownum的用法及解说,主要说明了rownum的用法,让人看了很清楚.
在MySQL中,我们通常都使用limit来完成数据集获取的分页操作,而在Oracle数据库中,并没有类似limit一样的方便方法来实现分页,因此我们通常都是直接在SQL语句中完成分页,这里就需要借助于rownum伪列或row_number()...
oracle_SQL中rowid与rownum的使用
举例介绍在oracle中rownum和rowId的不同以及使用方法
oracle_SQL中ROWID与ROWNUM的使用 很有用哦
关于oracle的rownum关于oracle的rownum关于oracle的rownum关于oracle的rownum关于oracle的rownum