有了这个表,我需要帮助从 id 3898 中选择值(tipologia_enum ='RECEITA') 到 4021 (tipologia_enum = 'RECEITA'),但还包括 id 4060,因为它的日期(“数据”列)小于最后一个值的日期 (id 4021)。我希望每行都有此信息,因为有更多行(低于 id 3898)。
我正在考虑聚合函数(“string_agg”,我正在使用 postrgres 15)并且输出类似于:
ID | 月 | 年份 |
---|---|---|
3898、[...]、4021、4060 | 1 | 2024 |
3598,[...],3897 | 12 | 2023 |
等等 | 等等 | 等等 |
有人可以帮我吗?
嘿,你的问题对我来说不太清楚。 您提到了
tipologia_enum
,但当我查看您的结果表时,它似乎并没有影响查询。您能否进一步解释一下您认为应该添加到查询中的内容?
根据您的起始表和结果表,我按年份和月份对值进行分组并聚合 ID。这是您要寻找的吗?
SELECT DISTINCT
YEAR(data),
MONTH(data),
STRING_AGG(CAST(TRIM(Id) as nvarchar(max)), ',') as 'Ids'
FROM
MyTable
group by
YEAR(A.CreDate),
MONTH(A.CreDate)
order by
YEAR(A.CreDate),
MONTH(A.CreDate) asc