1
이것은 내 생각에 두 개의 다른 열에 같은 레코드를 두 번 업데이트해야하지만, 작동하지 않습니다 간단한 UPDATE
이어야합니다.UPDATE 두 개의 열을 기반으로 조인
단순화 된 샘플 코드 :
DECLARE @nowWithDate DATETIME = GETDATE()
DECLARE @result TABLE(Id INT, Poll1Date DATETIME, Poll2Date DATETIME)
INSERT INTO @result VALUES(1, NULL, NULL)
;WITH data(Id, IsPoll1, IsPoll2) AS
(
SELECT 1, 1, 0
UNION ALL
SELECT 1, 0, 1
)
UPDATE r
SET Poll1Date = IIF(d.IsPoll1 = 1, @nowWithDate, Poll1Date),
Poll2Date = IIF(d.IsPoll2 = 1, @nowWithDate, Poll2Date)
FROM @result r
JOIN data d ON d.Id = r.Id
SELECT * FROM @result
나는 그것을 알아낼 수 없습니다, 왜 두 번째 날짜가 업데이트되지? 이 행은 한 번만 업데이트됩니다.
'왜 두 번째 날짜가 제공되지 않는 이유는 무엇입니까? 행을 모두 업데이트하려면'... 이것은 무엇을 의미합니까? –
생각해보십시오. 'data'에 ID'@ result'와 일치하는 두 개의 행이 있습니다. 매번'@ result'의 두 열을 모두 업데이트하고 있습니다. 두 번째 행을 처리하는 것이 첫 번째 업데이트에서 업데이트 된 값을 덮어 씁니다. 업데이트 문에서 ID를 그룹화하고 'IsPoll'열에서 MAX를 사용해야하는 것처럼 들립니다. – Bridge