Oracle分组取第一条数据

时间:2023-03-09 20:49:17
Oracle分组取第一条数据

看看曾经的私密日志。原来自己之前被非常多小而简单的问题困惑过。

看着那时候我们还是新手中的新手做的备忘笔记!

事实上就是用了Oracle的统计函数而已!

曾经的日记(看样子应该是曾经公司的源代码,呵呵……)例如以下:勿喷!

对多数据进行分组排序后取每组第一条记录:

SELECT *
FROM (
SELECT ROW_NUMBER() OVER(
PARTITION BY ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO
ORDER BY ZA40011_3.KAKUTEI_SURYO_CS,
ZA40011_3.KAKUTEI_SURYO_BL,
ZA40011_3.KAKUTEI_SURYO_BT,
ZA40011_3.SYUKKA_SHIJI_NO,
ZA40011_3.SYUKKA_SHIJI_ROW_NO DESC) LEV,
ZA40011_3 .*
FROM WT_001_ZA40011_22070_2 ZA40011_2,
WT_001_ZA40011_22070_3 ZA40011_3,
JT_GYOMU_URIAGE_DETAIL URIAGE_DETAIL
WHERE
ZA40011_2.KAISYA_CODE = URIAGE_DETAIL.KAISYA_CODE
AND ZA40011_2.URIAGE_DENPYO_NO = URIAGE_DETAIL.URIAGE_DENPYO_NO
AND ZA40011_2.URIAGE_DENPYO_ROW_NO = URIAGE_DETAIL.ROW_NO
AND URIAGE_DETAIL.KAISYA_CODE = ZA40011_3.KAISYA_CODE
AND URIAGE_DETAIL.URIAGE_DENPYO_NO = ZA40011_3.URIAGE_DENPYO_NO
AND URIAGE_DETAIL.ROW_NO = ZA40011_3.URIAGE_DENPYO_ROW_NO
AND ZA40011_3.KEPPIN_RIYU_CODE IS NOT NULL
)
WHERE LEV = 1
-- ORDER BY KAKUTEI_SURYO_CS DESC