UPDATE #YesterdayAssignments
SET ThisWeek = (
SELECT COUNT(*)
FROM #YesterdayAssignments U
INNER JOIN vstudyassignments A
ON U.HHID = A.lhouseholdid
INNER JOIN tstudies S
ON S.lstudyid = A.lstudyid
WHERE S.lstudytypeid IN (0,1,2)
AND S.bafteruse <> 1
AND S.lstatusid = 1
AND (A.dmailingdate BETWEEN DATEADD(DAY,1-DATEPART(dw,GETDATE()),GETDATE()) AND GETDATE()
OR A.dPulledDate BETWEEN DATEADD(DAY,1-DATEPART(dw,GETDATE()),GETDATE()) AND GETDATE())
AND S.dMailingDate < GETDATE()
GROUP BY HHID
)
FROM #YesterdayAssignments U
INNER JOIN vstudyassignments A
ON U.HHID = A.lhouseholdid
INNER JOIN tstudies S
ON S.lstudyid = A.lstudyid
WHERE S.lstudytypeid IN (0,1,2)
AND S.bafteruse <> 1
AND S.lstatusid = 1
AND (A.dmailingdate BETWEEN DATEADD(DAY,1-DATEPART(dw,GETDATE()),GETDATE()) AND GETDATE()
OR A.dPulledDate BETWEEN DATEADD(DAY,1-DATEPART(dw,GETDATE()),GETDATE()) AND GETDATE())
AND S.dMailingDate < GETDATE()
AND HHID = U.HHID
나는 오류를 얻을;
Msg 512, Level 16, State 1, Line 1
하위 쿼리가 두 개 이상의 값을 반환했습니다. 하위 쿼리가 =,! =, <, < =,>,> = 또는 하위 쿼리가 식으로 사용될 때 하위 쿼리가 수행되는 경우에는 허용되지 않습니다. 명세서가 종료되었습니다.
여러 값으로 테이블을 업데이트해야합니다. 어떤 아이디어?
내가 실수가 아니라면 ThisWeek (SELECT COUNT (*) FROM ...)에 지정하는 쿼리로 여러 값을 반환합니다. 예를 들어 ThisWeek가 3과 4와 같다고 말하고 있습니까? : -S – Anna
쿼리를 다시 만들지 않고 SELECT와 COUNT (*) 사이의 TOP 1을 하위 쿼리에 던지기 만하면됩니다. 하나의 값만 반환되도록 하위 쿼리의 WHERE 절을 구체화해야 할 수도 있습니다. –