我在case
语句中遇到了聚合函数的问题。我想编写一个查询,如果字段A等于字段A的最小日期,则将字段A设置为N
,否则设置为M
。
示例代码:
SELECT *, CASE
WHEN Field_A = MIN(FIELD_A) THEN 'JN'
ELSE 'JP'
END AS JUDI
FROM TABLE_1
GROUP BY *
我不确定为什么命令运行但没有正确执行。它会将JN
字段中的所有行标记为JUDI
。我该如何解决这个问题?
我正在运行SQL Server 7.我想要实现的是,在具有不同日期的行列表中,它标记的最早日期为JN
,后续日期为JP
。
答案 0 :(得分:0)
使用窗口功能:
SELECT t.*,
(CASE WHEN t.Field_A = MIN(t.FIELD_A) OVER () THEN 'JN'
ELSE 'JP'
END) AS JUDI
FROM TABLE_1 t;
为此,您不需要在整个表格上进行汇总。