2016-11-01 8 views
0

Ich bin mir sicher, wenn dies in SQL möglich ist, aber meine Kombination von Case-Anweisungen und wheres funktionieren nicht. Dies ist einige Testdaten in der Form Ich verwende ..SQL, die verschiedene Zeilen basierend auf bestimmten Bedingungen zurückgibt

enter image description here

Es zeigt Elemente in einem Auftrag. In dieser Reihenfolge hat der Kunde die Bestellung für Stifte geändert und den Betrag auf 15 erhöht. So wird die ursprüngliche Bestellposition ID 123 als überstanden markiert und eine neue Elementzeile wird erstellt, ID 158, und die Spalte PreviousVersion wird mit gefüllt die vorherigen Einträge itemId. AmendedStatusId ist der Status des geänderten Elements. Also im Beispiel ItemId 158 ist die aktualisierte Version von ItemId 123. Und die zusätzlichen Stifte wurden nicht bezahlt, da sie warten auf Genehmigung sind. Ich weiß, es sind nicht die besten Daten, aber mit denen muss ich arbeiten.

Was ich versuche zu tun ist, wenn die geänderten Elemente nicht bezahlt wurden, um das alte Element auszuwählen, also in diesem Beispiel ItemIds 123 und 124 zurückgeben. Wenn AmendedStatusId von ItemId 123 auf Bezahlt aktualisiert wird, möchte ich ItemId 124 und 158 zurückzugeben. Ist das möglich?

Vielen Dank im Voraus :)

+1

(1) Beschriften Sie Ihre Frage mit der Datenbank, die Sie verwenden. (2) Was passiert, wenn sich eine Auftragszeile mehr als einmal ändert? –

+0

Jedes Mal, wenn ein Artikel geändert wird, wird ein weiterer Datensatz zur Tabelle hinzugefügt. So wird die neue Änderung wie ItemId 158 aussehen, und die vorherigen werden ItemId 123 ähneln. Hoffnung, die Sinn macht. – clueless83

+0

Wie können Sie feststellen, dass 124 mit 158/123 verknüpft ist? 124 erscheint nicht in der Spalte 'PreviousVersion'. –

Antwort

0

Diese Art von Struktur sollte Ihnen den Anfang machen.

select isnull(paidItemId, unpaidItemId) itemId 
from yourTables 
left join (subquery to identify paid items) paidItems on something 
left join (subquery to identify unpaid items) unpaidItems on something 
etc 
Verwandte Themen