暂无图片
请教个SQL
我来答
分享
刘晓华
2024-08-27
请教个SQL
暂无图片 25M

表T有5个字段emid,c1,c2,c3,dt分别代表工号,字段1,字段2,字段3和日期,数据如左图,我想按得到右边的结果,即:同一个工号,如果同一个日期有两行或三行则“压缩”成一行,怎么弄?

谢谢!



我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
孙莹

drop table t;
create table t (emid varchar(20),c1 varchar(20),c2 varchar(20),c3 varchar(20),dt date);
insert into t values('A','V1',null,null,to_date('2024-08-25','yyyy-mm-dd'));
insert into t values('A',null,'V2',null,to_date('2024-08-25','yyyy-mm-dd'));
insert into t values('A',null,null,'V3',to_date('2024-08-25','yyyy-mm-dd'));
insert into t values('A',null,'V4',null,to_date('2024-08-27','yyyy-mm-dd'));
insert into t values('A','V5',null,null,to_date('2024-08-28','yyyy-mm-dd'));
commit;
select * from t;
select emid,max(c1) c1,max(c2) c2,max(c3) c3,dt from t group by emid,dt order by emid,dt;


暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
范达宏

这种情况记得把建表,初始化数据的语句发出来

暂无图片 评论
暂无图片 有用 0
打赏 0
一一

select emid,max(c1) as c1,max(c2) as c2,max(c3) as c3,dt from t group emid,dt

暂无图片 评论
暂无图片 有用 1
打赏 0
范达宏

SELECT
emid,
dt,
LISTAGG(c1, ', ') WITHIN GROUP (ORDER BY ROWID) AS c1_combined,
LISTAGG(c2, ', ') WITHIN GROUP (ORDER BY ROWID) AS c2_combined,
LISTAGG(c3, ', ') WITHIN GROUP (ORDER BY ROWID) AS c3_combined
FROM T
GROUP BY emid, dt;

暂无图片 评论
暂无图片 有用 0
打赏 0
forever

SELECT

Emid,LISTAGG(c1,',') WITHIN GROUP (ORDER BY C1) AS C1,

LISTAGG(c2,',') WITHIN GROUP (ORDER BY c2) AS C2,

LISTAGG(c3,',') WITHIN GROUP (ORDER BY c3) AS C3,

Dt

FROM t

GROUP BY Emid,dt;

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

是否有可能有两条记录,其Emid,dt都相同,且c1都有值?如果是这样,那用listaggr的写法满足要求。

暂无图片 评论
暂无图片 有用 0
打赏 0
刘晓华
题主
2024-09-18
前几天用listagg写了出来了,谢谢Thomas
回答交流
Markdown


请输入正文
提交
相关推荐
求查看Oracle临时表空间使用率比较准的SQL?
回答 2
selectd.tablespacename,space"sumspace(m)",blockssumblocks,usedspace"usedspace(m)",round(nvl(usedspac
oracle 的 profile 策略修改后是立即生效的嘛?? 各位大佬可否解惑
回答 3
.profile文件修改后需要执行一下source.profile才能立即生效或者退出当前用户重新su进来也是自动生效的
日常开发dba工作有什么呢?
回答 2
已采纳
作为日常开发和运维数据库管理员(DBA),以下是一些常见的任务和责任:数据库安装和配置:安装数据库服务器软件,并进行必要的配置,例如设置内存、存储路径、网络连接等。数据库备份与恢复:定期备份数据库以保
AWR分析报告问题求助:如何去优化
回答 2
感谢大佬我研究一下
RMAN备份问题
回答 3
rman中看一下备份过期策略RMAN>showall;obsoletebackupAbackupthatisnotneededtosatisfythecurrentbackupretention
oracle apex是否可以使用nfc功能,以及录像保存功能
回答 2
是啊,国内太少了谢谢啦
AHF orachk是什么
回答 2
AHF打错了
insert select 很慢
回答 4
量不算大,建议还是多在select上提升,如分批基于rowid的查询分片多sessioninsert
关注我每日一问Oracle,又可以学习又可以得墨值。
回答 2
已采纳
当插入一条日期是10天前的数据,然后插入一条日期是5天前的数据时:10天前的数据:将会存放在已存在的当日分区中,因为根据间隔分区的定义,分区会包含分区键值等于该分区上边界的记录。5天前的数据:同样也会
19c 查询表数据显示问号
回答 3
应该就是字符集的问题