HAVING子句或选择列表,以及要聚合的列是外部引用

时间:2013-09-01 09:37:23

标签: sql-server

此代码

 SELECT * FROM MBR_MST WHERE MBR_JOIN_DT=MIN(MBR_JOIN_DT)

显示以下错误:

  

Msg 147,Level 15,State 1,Line 1   聚合可能不会出现在WHERE子句中,除非它位于包含在a中的子查询中   HAVING子句或选择列表,以及要聚合的列是外部引用。

2 个答案:

答案 0 :(得分:6)

看起来您正在尝试使用最小连接日期获取记录。这有两种方法:

SELECT *
FROM MBR_MST
WHERE MBR_JOIN_DT = (select MIN(MBR_JOIN_DT) from MBR_MST);

SELECT TOP 1 *
FROM MBR_MST
ORDER BY MBR_JOIN_DT;

答案 1 :(得分:0)

试试这个 -

SELECT m.*
FROM dbo.MBR_MST m
CROSS JOIN (
    SELECT min_value = MIN(MBR_JOIN_DT) 
    FROM dbo.MBR_MST 
) t
WHERE MBR_JOIN_DT = min_value

SELECT *
FROM dbo.MBR_MST m
WHERE MBR_JOIN_DT = (SELECT MIN(MBR_JOIN_DT) FROM dbo.MBR_MST)