1

これは完全に機能する私の更新ステートメントです。表 1 と表 2 に同じシリアル番号が含まれている場合、表 1 は「はい」で更新され、含まれていない場合は「いいえ」で更新されます。

UPDATE dbo.table1
SET [Match] = CASE WHEN dbo.table2.[Serial Number] IS NOT NULL
THEN 'yes' ELSE 'no' END
FROM dbo.table1 LEFT OUTER JOIN dbo.table2
    ON dbo.table2.[Serial Number] = dbo.table1.[Serial Number]
AND dbo.table1.[Date] = 'JAN11' AND 
      dbo.table1.[Install] = 'new' AND
      dbo.table2.[Date] = 'JAN11' AND 
      dbo.table2.[Install] = 'new'

問題は現在、呼び出されていない表1のすべてがnoで更新されているため、最初にselectステートメントを呼び出すことです...このようなものです

select * from table1 where [Date] = 'JAN11' AND [Install] = 'new'

更新内にネストして、関連する列のみが no または yes で更新されるようにします...

4

1 に答える 1

14
UPDATE t1
  SET [Match] = CASE WHEN t2.[Serial Number] IS NOT NULL
  THEN 'yes' ELSE 'no' END
FROM dbo.table1 AS t1 
LEFT OUTER JOIN dbo.table2 AS t2
   ON t1.[Serial Number] = t2.[Serial Number]
  AND t1.[Date] = t2.[Date]
  AND t1.[Install] = t2.[Install]
WHERE t1.[Date] = 'JAN11' 
  AND t1.[Install] = 'new';
于 2012-06-28T12:32:32.450 に答える