执行查询后,我收到以下错误:
Msg 512,Level 16,State 1,Line 1 Subquery返回的值超过1 值。当子查询遵循=,!=,<,< =,
时,不允许这样做,> =或当子查询用作表达式时。
SELECT MAX(IL.INSLEND),n.ACTIONED, N.LEASID,n.BLDGID
FROM note n
INNER JOIN dbo.INSL il ON n.SEQNO=il.RECNUM
INNER JOIN dbo.LEAS l ON l.BLDGID = n.BLDGID AND l.LEASID = n.LEASID
AND n.REF1 = 'INSURAN' AND n.REF2= 'REMIND' OR n.ACTIONED <> 'C'
AND il.TABLEKEY = n.LEASID
WHERE il.TABLEID='LEAS' AND il.TABLEKEY = L.LEASID
GROUP BY n.LEASID, N.BLDGID, n.ACTIONED, IL.TABLEKEY, IL.TABLEID, L.LEASID
HAVING N.LEASID='083468' AND
(SELECT MAX(il.INSLEND) FROM dbo.INSL WHERE IL.TABLEKEY=L.LEASID AND IL.TABLEID='LEAS') < '2016-04-11'
答案 0 :(得分:0)
试试这个......
SELECT MAX(IL.INSLEND),n.ACTIONED, N.LEASID,n.BLDGID FROM note n INNER JOIN dbo.INSL il ON n.SEQNO=il.RECNUM INNER JOIN dbo.LEAS l ON l.BLDGID = n.BLDGID AND l.LEASID = n.LEASID AND n.REF1 = 'INSURAN' AND n.REF2= 'REMIND' OR n.ACTIONED <> 'C' AND il.TABLEKEY = n.LEASID WHERE il.TABLEID='LEAS' AND il.TABLEKEY = L.LEASID GROUP BY n.LEASID, N.BLDGID, n.ACTIONED, IL.TABLEKEY, IL.TABLEID, L.LEASID HAVING N.LEASID='083468' AND MAX(il.INSLEND)< '2016-04-11'
答案 1 :(得分:0)
只需添加group by,即可将相同的值分组
但请注意,在您的子查询MAX(il.INSLEND)
中,您正在汇总dbo.INSL il
的列而不是子查询的列
( SELECT MAX(insl.INSLEND)
FROM dbo.INSL insl
WHERE IL.TABLEKEY=L.LEASID AND IL.TABLEID='LEAS'
GROUP BY (insl.INSLEND)
) < '2016-04-11'
答案 2 :(得分:-1)
尝试这样的事情:
SELECT MAX(IL.INSLEND),n.ACTIONED, N.LEASID,n.BLDGID
FROM note n
INNER JOIN dbo.INSL il ON n.SEQNO=il.RECNUM
INNER JOIN dbo.LEAS l ON l.BLDGID = n.BLDGID AND l.LEASID = n.LEASID
AND n.REF1 = 'INSURAN' AND n.REF2= 'REMIND' OR n.ACTIONED <> 'C'
AND il.TABLEKEY = n.LEASID
WHERE il.TABLEID='LEAS' AND il.TABLEKEY = L.LEASID
GROUP BY n.LEASID, N.BLDGID, n.ACTIONED, IL.TABLEKEY, IL.TABLEID, L.LEASID
HAVING N.LEASID='083468' AND
--Use TOP 1. It should help you
(SELECT TOP 1 MAX(il.INSLEND) FROM dbo.INSL WHERE IL.TABLEKEY=L.LEASID AND IL.TABLEID='LEAS') < '2016-04-11'