[英]Aggregate function inside Case Statement
我在case
语句中的集合函数遇到了一些麻烦。 我想编写一个查询,如果它等于字段A的最小日期,则将字段A设置为N
,否则将字段M
设置为N
样例代码:
SELECT *, CASE
WHEN Field_A = MIN(FIELD_A) THEN 'JN'
ELSE 'JP'
END AS JUDI
FROM TABLE_1
GROUP BY *
我不确定为什么命令会运行但无法正确执行。 它将所有行标记为JUDI
字段中的JN
。 我怎样才能解决这个问题?
我正在运行SQL Server7。我想要实现的是,在具有不同日期的行列表中,它用JN
标记最早的日期,而用JP
标记最早的日期。
使用窗口功能:
SELECT t.*,
(CASE WHEN t.Field_A = MIN(t.FIELD_A) OVER () THEN 'JN'
ELSE 'JP'
END) AS JUDI
FROM TABLE_1 t;
您不需要为此在整个表上进行聚合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.