Ich habe eine Tabelle mit 3 Zeilen: AccountNum, InvoiceAcc und blockiert. Die meisten Zeilen meiner Tabelle haben einen InvoiceAcc, aber nicht alle. AccountNum ist der eindeutige Bezeichner und es ist möglich, dass mehrere AccountNum den gleichen InvoiceAcc haben. Blocked ist ein int-Wert, der von 0, 1 und 2 abweicht.SQL - Verwenden einer Unterauswahl
Der InvoiceAcc basiert auf einem AccountNum, also denken Sie an ihn als ein Elternbüro, das dann weiterführende Child Offices hat.
Zum Beispiel kann ein Elternteil Büro wie so:
AccountNum - 1, InvoiceAcc - null, Blocked - 2
könnte ein Kind Büros wie so hat:
AccountNum - 1-1, InvoiceAcc - 1, Blocked - 0
AccountNum - 1-2, InvoiceAcc - 1, Blocked - 1
Was ich möchte, ist zu tun, um die InvoiceAcc einer Zeile und ihre späteren prüfen AccountNum blockierter Wert. Also in meinem obigen Beispiel, wenn ich eine Abfrage wie so tue:
SELECT BLOCKED FROM CustTable WHERE AccountNum = '1-1'
Es würde zurückkehren 0 als dass der blockierte Wert ist. Was ich möchte, ist die Rückgabe von 2, da dieser den höheren Wert hat und das Elternkonto ist. Wenn der übergeordnete acc einen blockierten Wert von 1 hat und das untergeordnete Konto, das ich abfrage, einen blockierten Wert von 2 hat, dann sollte es 2 zurückgeben. Ich nehme an, dass ein subselect hier benötigt würde?
Es sollte den höchsten blockierten Wert basierend Rendite entweder selbst oder seine Eltern erklären, wenn es ein übergeordnetes Konto hat
das ist auch statisch für accno = 1 – SMK
Nop, nicht wenn ich das durch einen Parameter ersetze oder sogar den wo ganz entferne, da dies den höchsten Blockwert jedes Kunden zeigt – CallumVass