给定需求1:将数据表中的数据分组并排序,并且每组数据要显示序号。
SELECT
ROW_NUMBER () OVER (
PARTITION BY YEAR_INFO,
ITEM_NUMBER,
VENDOR_CODE,
BASE_ORG,
PRICE_DATE_START,
PRICE_DATE_END
ORDER BY
CREATED_AT DESC
) rn,
XXCT_SETTLEMENT_LETTER_ITEM.*
FROM
XXCT_SETTLEMENT_LETTER_ITEM
给定需求2:将数据表中的数据分组且只显示每组数据的最新一条数据。
解决方案:只需要将需求1中分组排序过的数据,取出每组行号为1的行号即可。
SELECT
*
FROM
(
SELECT
ROW_NUMBER () OVER (
PARTITION BY YEAR_INFO,
ITEM_NUMBER,
VENDOR_CODE,
BASE_ORG,
PRICE_DATE_START,
PRICE_DATE_END
ORDER BY
CREATED_AT DESC
) rn,
XXCT_SETTLEMENT_LETTER_ITEM.*
FROM
XXCT_SETTLEMENT_LETTER_ITEM
)
WHERE
rn = 1