因此,当记录具有相同的 VAR、相同的组但不同的 SalesPrice 时:我需要将其注释为“需要定义” 我试图使用窗口函数但无法成功。 任何帮助表示赞赏 提前非常感谢
我尝试使用窗口函数并添加额外的列,但它只是没有产生任何有效的结果。
正如@siggemannen 在评论中所建议的,您可以使用
MIN()
和 MAX()
窗口函数。如果组内的最小值与最大值不同,则标记它:
SELECT *, CASE WHEN MAX(salesprice) OVER (PARTITION BY Var, [Group]) <> MIN(salesprice) OVER (PARTITION BY Var, [Group])
THEN 'need to define' ELSE ''
END AS Comment
FROM mytable
WINDOW win AS (PARTITION BY Var, [Group])
ORDER BY ID
如果您使用 SQL SERVER 2022+,则使用 WINDOW 子句定义一次窗口并在查询中多次引用它,这将保证所有窗口函数对数据使用相同的单次传递:
SELECT *, CASE WHEN max(salesprice) OVER win <> MIN(salesprice) OVER win
THEN 'need to define' ELSE ''
END
FROM mytable
WINDOW win AS (PARTITION BY Var, [Group])
ORDER BY ID