聚合具有相同值的列之间以及日期之间的每个 id

问题描述 投票:0回答:1

有了这个表,我需要帮助从 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
等等 等等 等等

有人可以帮我吗?

sql postgresql aggregate-functions
1个回答
0
投票

嘿,你的问题对我来说不太清楚。 您提到了

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
© www.soinside.com 2019 - 2024. All rights reserved.