Case语句中的聚合函数

时间:2017-10-30 11:05:15

标签: sql sql-server case

我在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

1 个答案:

答案 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;

为此,您不需要在整个表格上进行汇总。