2016-07-29 3 views
0

Probleme damit. Ich muss die Zeile in der Master-Tabelle aktualisieren, wenn das eindeutige Element in der Staging-Tabelle nicht vorhanden ist und das Datum in der Master-Tabelle NULL ist.SQL, wenn die Zeile in der Staging-Tabelle nicht vorhanden ist und das Datum in der Mastertabelle null ist, dann aktualisiere das Datum in der Mastertabelle

Das Problem ist mein unten Code aktualisiert alle Datensätze, die Nullen haben, nicht nur diejenigen, die aus der Staging-Tabelle fehlen.

Gibt es eine Verbindung zwischen diesen beiden Filtern? Dank

UPDATE Master_Table 
SET Master_Table.Resolve_Date = DATEADD(DAY, -1, GETDATE()) 
WHERE NOT EXISTS (SELECT 
    [Unique_Key] 
FROM Staging_Table 
WHERE (Master_Table.[Unique Voucher Key] = Staging_Table.[Unique Voucher Key] 
AND Master_Table.Resolve_Date = '' 
)) 
+1

techspider Ihr NULL Problem zur Kenntnis genommen. Führen Sie das aus, um zu sehen, wie NULL funktioniert: 'SELECT 1 WHERE NULL = NULL; SELECT 1 WHERE NULL = ''; SELECT 1 WHERE ISNULL (NULL, '') = '' ' – scsimon

Antwort

1

Du bist gerade nicht NULL richtig. Es gibt immer einen Unterschied zwischen '' und NULL. '' bezeichnet eine leere Zeichenfolge.

Versuchen Sie diesen Code:

UPDATE mt SET mt.Resolve_Date = DATEADD(DAY, -1, GETDATE()) 
FROM Staging_Table st 
JOIN Master_Table mt ON mt.[Unique Voucher Key] = st.[Unique Voucher Key] 
WHERE mt.Resolve_Date IS NULL 
+0

Ich denke, Sie brauchen eine Sekunde schließen nach getdate() – Beth

+0

@Beth - Thanks; ich habe aktualisiert – techspider

Verwandte Themen