2012-04-05 5 views
1

誰かが非常に単純なSQLクエリを手伝ってくれるかどうかは不思議です。私が参加使うべき​​SQL Serverでのデータの移動where table1.jobid = table 2.jobid

をTABLE2する

私はTABLE1のデータを転送する必要がありますか?

jobIDを使用してtable1のデータをNULLカラムに入力したいとします。それがnullである場合にのみそれが更新したい場合は、その後、

UPDATE PreviousJobsTEST 
SET dValuationDate = Jobs.dValuationDate 
FROM PreviousJobsTEST 
    JOIN Jobs 
     ON PreviousJobsTEST.iJobID= Jobs.iJobID 

:それはあなたが必要とするすべてのように聞こえる限られた知識でアドバンス

AC

+0

私はこれを試してみましたが、私は失敗しました:。。。。[DocPrep] [DBO] [ジョブ] [DocPrep] FROM [DocPrep] [DBO] [PreviousJobsTEST](dValuationDate) INTO INSERT [dbo]。[ジョブ](iJobID)= [DocPrep]。[dbo]。[PreviousJobsTEST](iJobID) – Mikey3Strings

+0

ようこそ!私はいつも新しいメンバーを歓迎し、アップボートと承認された回答(答えの隣にチェック)を介して感謝が表示されることを知らせます。詳細については、[faq]を参照してください。 –

答えて

0

おかげで、単純なUPDATEですあなたはこれを行うことができます:

UPDATE PreviousJobsTEST 
SET dValuationDate = CASE WHEN PreviousJobsTEST.dValuationDate IS NULL THEN Jobs.dValuationDate ELSE PreviousJobsTEST.dValuationDate END 
FROM PreviousJobsTEST 
    JOIN Jobs 
     ON PreviousJobsTEST.iJobID= Jobs.iJobID 

または、あなたのコメントに基づいて、あなたが持っていることを行うことができます

INSERT INTO [DocPrep].[dbo].[PreviousJobsTEST] (dValuationDate) 
SELECT [DocPrep].[dbo].[Jobs].[dValuationDate] 
FROM [DocPrep].[dbo].[PreviousJobsTEST] 
    JOIN [DocPrep].[dbo].[Jobs] 
     ON [DocPrep].[dbo].[Jobs].[iJobID] = [DocPrep].[dbo].[PreviousJobsTEST].[iJobID] 
+0

Im取得: メッセージ209、レベル16、状態1、行2 あいまいな列名 'dValuationDate'。 – Mikey3Strings

+0

@AtomicCockroach私は自分の答えを更新しました –

+0

最初の更新句を試しています – Mikey3Strings

0

t1.columnがnullの場合は、更新する必要があります。 t1.columnがnullでない場合は、それを自分自身に設定する必要があります。

SELECT * 
INTO #table1 
FROM (SELECT '1' AS jobid, 
       NULL AS column1 
     UNION ALL 
     SELECT '2', 
       NULL 
     UNION ALL 
     SELECT '3', 
       NULL 
     UNION ALL 
     SELECT '4', 
       'A' 
     UNION ALL 
     SELECT '5', 
       NULL) a 

SELECT * 
INTO #table2 
FROM (SELECT '1' AS jobid, 
       '1' AS column1 
     UNION ALL 
     SELECT '2', 
       '2' 
     UNION ALL 
     SELECT '3', 
       '3' 
     UNION ALL 
     SELECT '4', 
       '4' 
     UNION ALL 
     SELECT '5', 
       '5')b 

UPDATE t1 
SET t1.column1 = (CASE 
         WHEN t1.column1 IS NULL THEN t2.column1 
         ELSE t1.column1 
         END) 
FROM #table1 t1 
     LEFT JOIN #table2 t2 
     ON t1.jobid = t2.jobid 

SELECT * 
FROM #table1 
関連する問題