如何在根据其他条件选择值时部分 GROUP BY 列?

How can I partially GROUP BY columns while picking values based on a condition for others?

有没有一种方法可以让我按周对数据进行分组,同时确保对于某些列,我得到 RN=1 的值?我的数据中有数百列,只有一些列需要“where RN = 1”;名称中带有 MTD 的那些。

max([MTD Value] as [MTD Value] 将不起作用,因为 RN = 1 并不总是一周中的最高值(月份在一周中间变化的情况)

我在 SQL 方面的经验有限,如果答案在于子查询,我可能需要一些帮助。

我打算从中得到的是:

我打算总结除 select 少数“MTD”标签之外的所有数据。

感谢您抽出宝贵时间。

您可以使用 window 函数计算每周最大值 daily_value,然后根据 rn = 1:

进行过滤
select date, week, max_daily_value as daily_value, mtd_value
from (
    select 
        t.*, 
        max(daily_value) over(partition by week) max_daily_value 
    from mytable t
) t
where rn = 1