能有个写字的地方,让我觉得我还是我

文|杨小妹一二一

最近好忙好累,天天加班🤪

不过自己也好厉害,硬挤时间看完了三本书,《人间旅馆》《重生》《疯探》

太少了,公众号文章,这个月只写了三篇🤪

体力活交给AI帮忙干干🤪

不会写的sql,让AI帮我写写🤪

下班那会被一个问题困扰着,在地铁上,写好问题和诉求,AI分分钟给答案。

明天还要去加班,顺便验证一下AI给的答案正确不🤪

我在这碎碎念了一会,才感觉自己是自己,不只是牛马,也不只是一台机器,原来我还会写写自己喜欢的文字。


问题描述:

applyId        Je        rq

S                A1        2025-10-11

S                A2        2025-10-12

S                A3        2025-10-13

诉求:

oracle处理数据,按照Applyid分组,将数据封装成一行,分别有Je1,Je2,Je3,rq1,rq2,rq3

回答:

在 Oracle 数据库中,可以使用 PIVOT 操作符(Oracle 11g 及以上版本)来实现您想要的效果。由于您需要将 Je 和 rq 两个字段都进行行转列,并且按日期 (rq) 排序后分配序号,我们需要先使用分析函数 ROW_NUMBER() 为每一行生成一个序号,然后再进行透视。

SELECT

    applyId,

    MAX(CASE WHEN rn = 1 THEN Je END) AS Je1,

    MAX(CASE WHEN rn = 2 THEN Je END) AS Je2,

    MAX(CASE WHEN rn = 3 THEN Je END) AS Je3,

    MAX(CASE WHEN rn = 1 THEN rq END) AS rq1,

    MAX(CASE WHEN rn = 2 THEN rq END) AS rq2,

    MAX(CASE WHEN rn = 3 THEN rq END) AS rq3

FROM (

    SELECT

        applyId,

        Je,

        rq,

        ROW_NUMBER() OVER (PARTITION BY applyId ORDER BY rq) AS rn

    FROM your_table_name -- 请将 your_table_name 替换为您的实际表名

) t

GROUP BY applyId;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。