2012-04-05 5 views
1

Ich frage mich nur, ob jemand mir mit einer sehr einfachen SQL-Abfrage helfen konnte.Verschieben von Daten in SQL Server mit where table1.jobid = Tabelle 2.jobid

Ich brauche von table1 Daten übertragen where table1.jobID = table2.jobID

table2 Soll ich kommen benutzen?

Ich möchte nur eine NULL-Spalte mit Daten aus Tabelle1 ausfüllen, JobID verwenden, um übereinzustimmen.

Vielen Dank im Voraus

AC

+0

Ich versuchte dies aber ich schlug fehl:.... INSERT INTO [DocPrep] [dbo] [PreviousJobsTEST] (dValuationDate) FROM [DocPrep] [dbo] [Jobs] WHERE [DocPrep] . [dbo]. [Jobs] (iJobID) = [DocPrep]. [dbo]. [VorherigeJobsTEST] (iJobID) – Mikey3Strings

+0

Willkommen bei Stack Overflow! Ich begrüße immer neue Mitglieder und lasse sie wissen, dass Wertschätzung durch Upvotes und akzeptierte Antworten angezeigt wird (Check neben Antwort). Bitte beachten Sie die [FAQ] für weitere Informationen, vor allem die [fragen] –

Antwort

0

Mit dem begrenzten Wissen sie wie alle Sounds, die Sie brauchen, ist eine einfache UPDATE:

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

Wenn Sie es nur aktualisiert wollen, wenn es null ist, dann Sie können dies tun:

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 

OR, basierend auf Ihren Kommentar, könnten Sie tun, was Sie haben, aufgeführt sind, müssen Sie nur in eine SELECT hinter dem Einsatz drehen:

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 bekommen: Msg 209, Ebene 16, Zustand 1, Zeile 2 Mehrdeutige Spaltenname 'dValuationDate'. – Mikey3Strings

+0

@AtomicCockroach Ich habe meine Antwort aktualisiert –

+0

Ich versuche die erste Update-Klausel – Mikey3Strings

0

Sie müssen aktualisiert werden, wenn t1.column null ist. und wenn t1.column nicht null ist, sollten Sie es auf sich selbst setzen.

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