2017-03-15 4 views
0

Ich habe zwei Dateien, die eine täglich Datei und Sekunde ist die monatliche Datei. Jetzt werden tägliche Dateien jeden Tag in eine Tabelle geladen.Aktualisieren Sie einen Datensatz in der täglichen Tabelle von monatlich

Wir bekommen monatliche Datei im nächsten Monat 1. Woche (Zum Beispiel In der monatlichen Datei haben wir 1. Januar bis 31. Januar Daten und wir werden diese Datei in 1. Februar Woche erhalten). Nach dem Laden der täglichen Dateidaten werden wir die monatliche Datei aktualisieren, jetzt sollte ich eine Spalte als Status hinzufügen.

"Wenn die Bestellung in einem täglichen oder monatlichen Feed eingeht, geben Sie den Status BOOKED ein. Wenn der Auftrag nicht im monatlichen Feed eingeht, aber im täglichen Feed vorhanden ist, aktualisieren Sie den Status als CANCELED "

Wer schreibt SQL dafür? Any Suggestions.

Es sei in der Tat Tabelle haben wir

+----------+--------------------+-----------+ 
|order_id | booking_date | status | 
| 100 | 2017-02-10 | booked | 
| 101 | 2017-02-12 | booked | 
+----------+--------------------+-----------+ 

In Monatsdatei

+----------+--------------------+ 
|order_id | booking_date | 
|100 | 2017-02-10 | 
+-----------+-------------------+ 

ich führen möchte wie diese

+----------+--------------------+-------------+ 
|order_id | booking_date | status | 
| 100 | 2017-02-10 | booked | 
| 101 | 2017-02-12 | cancelled| 
+0

Einige Beispieldaten und gewünschtes Ergebnis wäre toll – JohnHC

+0

Angenommen, in der Tat Tabelle haben wir | order_id | Buchungsdatum | Status | | 100 | 2017-02-10 | gebucht | | 101 | 2017-02-12 \t | gebucht | In monatlicher Datei | order_id | Buchungsdatum | | 100 \t | 2017-02-10 | Ich möchte Ergebnis | order_id | Buchungsdatum | Status | | 100 | 2017-02-10 | gebucht | | 101 | 2017-02-12 | storniert | –

Antwort

0

ziemlich einfach. Laden Sie Ihre monatliche Datei in die DB, dann verwenden Sie diese:

update MyTable 
set status = 'Cancelled' 
where Order_ID not in (select Order_ID from Monthly_File) 
+0

In Monthlyfile haben wir nur Daten zum Monat März, wenn ich diese Abfrage verwende, werden alle Daten zu den verbleibenden Monaten als storniert angezeigt. Zum Beispiel, wenn ich monatliche Datei für März bekomme, sollte es nur März Daten in MYtable nehmen –

+1

Endlich Got it Thank q so viel !!!! @JohnHC update MYtable set status = 'storniert' wo (order_id, order_date) nicht in (select order_id, order_date von Monthly file) –

Verwandte Themen