2016-06-08 8 views
0

Dies klingt vielleicht wie eine seltsame Anfrage, aber mit den Experten, die wir auf dieser Website haben, weiß ich, dass wir eine Lösung dafür finden können. So habe ich eine gespeicherte Prozedur, die wie folgt aussieht http://pastebin.com/ZTgxG3SB Ich versuche, das in eine einfache SQL-Anweisung ohne die Verwendung von beliebigen temporären Tabellen und SQL-Variablen zu konvertieren. Ich brauche die Abfrage in einem Werkzeug, wo es nur Standard-SQL-Anweisungen unterstützt und nicht unterstützt temporäre Tabellen und SQL-Variablen.Kombinieren Sie zwei SQL-Abfragen ohne Verwendung von SQL-Variablen

Im Stored Proc akzeptiert es eine SKU als Eingabeparameter. Der erste Teil des SP sammelt bis zu 6 Geschwister für die gegebene SKU und speichert diese in Variablen, dann führt er den anderen sql aus, wo er Geschäftsinformationen und Inventar für das Original und die Geschwister sammelt. Was ich tun möchte, ist, die beiden Abfragen in eine zusammenzufassen, aber nicht sicher, wie das geht, da mein SQL-Wissen begrenzt ist. Die Idee, die ich habe, ist, starten Sie die zweite sql und in dem Teil, wo ich die Geschwistermenge setzen, nur eine Unterabfrage zu gehen und wählen Sie jede Geschwister in einer Reihenfolge der Priorität.

Dies ist sehr kritisch und würde einige Hilfe mit diesem sehr schätzen. In der Tat, wenn Sie lokal sind, nehme ich Sie zum Mittagessen :)

+0

Quelle als Text eingeben. –

+1

Können Sie mit Ihrem Code keine Funktion erstellen und diese dann von Ihrem Tool aus aufrufen? –

+0

Der Aufruf eines SP oder einer Funktion hat leider die gleichen Einschränkungen, aber ich versuche das. – Eclipse

Antwort

2

Es gibt eine Reihe von Code, der effektiv wiederholt. So können Sie jede der Änderung:

sib1.product_code = @SIB1 

zu:

sib1.product_code in (SELECT SKU FROM @TempTbl WHERE RowID = 1) 

, dass die einzelnen variablen Lookups beseitigen würde und erhalten Sie bis zu Ihrem Ziel von zwei Abfragen (eine @TempTbl zu erstellen und dann die endgültige Abfrage).

Sie könnten einen Schritt weiter gehen, indem Sie SQL Server Common Table Expression statt @TempTbl erstellen.

+0

@Eclipse, wenn Sie die Abfrage mit dem obigen Vorschlag neu schreiben können, wäre es der erste große Schritt. Der nächste wäre ein einfacher, wenn Ihr "Werkzeug" CTE unterstützt. – Alex