2016-07-15 24 views
0

Ok, ich habe ein paar Beiträge auf diesem aber aus irgendeinem Grund mein Code nicht aktualisiert das TrnID-Feld aus Tabelle A mit den Informationen über LastTrnID aus Tabelle B, jede Hilfe wird sehr sein geschätzt. Wenn ich meinen inneren Join auf nur einem Feld basiere, dann funktioniert das Update, aber ich weiß, dass es so gemacht werden kann, dass du innerlich auf zwei Felder kommst, aber ich kann nur annehmen, dass ich es nicht richtig mache. Grundsätzlich werden Tabelle A und Tabelle B am Anfang der Abfrage fliegend erstellt, und dann muss ich beide Sätze in eine Tabelle setzen. Die finale Tabelle sollte die Person und dann für jede Person die erste und letzte Transaktion pro Tag enthalten, weshalb ich innerlich bei CrdID und LastTrndate mitmache, was der Tagesabschnitt des Feldes ist.Update-Tabelle sql basierend auf zwei Kriterien

UPDATE 
    Table_A 
SET 
    Table_A.TrnID = Table_B.LastTrnID  
FROM Table_A 
INNER JOIN Table_B 
     ON (Table_A.CrdID = Table_B.CardholderID) 
     AND (Table_A.TrnD = Table_B.LastTrnDate) 
+1

Wir brauchen Db-Schema, Beispieldaten und erwartete Ausgabe. Führen Sie das direkt auf db oder in Ihrer Anwendung aus? Bitte lesen Sie [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein großartiger Ort, um [** START **] (http : //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) um zu erfahren, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –

+0

wahrscheinlicher table_A.Trnd und Table_B.LastTrnDate werden niemals für jeden Teil der Transaktion gleich sein. benutze stattdessen: CONVERT (varchar, Table_A.Trnd, 101) = KONVERTIEREN (VARCHAR, Table_B.LastTrnDate, 101) –

Antwort

1

Ihre Abfrage sieht nicht gut aus (neben dem zusätzlichen # auf #Table_A)

So ist wahrscheinlich Fehler auf die Daten. Zuerst überprüfen Sie Ihre Abfrage bringt die Ergebnisse

Versuchen Sie SELECT, um zu sehen, ob die Felder, die Sie aktualisieren möchten und der neue Wert korrekt sind.

SELECT Table_A.TrnID, Table_B.LastTrnID  
FROM Table_A 
INNER JOIN Table_B 
     ON Table_A.CrdID = Table_B.CardholderID 
     AND Table_A.TrnD = Table_B.LastTrnDate 
+0

Ich entschuldige mich, die extra # war nur ein Tippfehler hier auf der Website. So viel, was ich versuche zu tun, ist ein Feld auf Tabelle A zu aktualisieren, basierend auf zwei Kriterien. Ab sofort wird das Feld aus Tabelle A nur aktualisiert, wenn ich nur ein Kriterium für meine innere Verknüpfung habe. Wenn ich das zweite Kriterium hinzufüge, funktioniert das Update nicht mehr. – Mnk

+0

hast du die Auswahl versucht? gib dir irgendein ergebnis? –

0
UPDATE f1 
    SET f1.TrnID = f2.LastTrnID  
    FROM Table_A f1 INNER JOIN Table_B f2 
    ON (f1.CrdID = f2.CardholderID) AND (f1.TrnD = f2.LastTrnDate) 
Verwandte Themen