Dynamisch Ändern, welche Tabelle zur Auswahl mit SQL CASE-Anweisung

Ich versuche eine gespeicherte Prozedur schreiben, und je nach einer bestimmten Spalte Wert, ich möchte in der Lage sein, zu ändern, was Tabelle wähle ich aus. Ich werde versuchen, ein Beispiel zu geben:

SELECT ItemNumber,
       ItemType, 
       Description
FROM

CASE ItemType
WHEN 'A' THEN TableA
ELSE TableB
END

WHERE 

CASE ItemType
WHEN 'A' THEN ItemNumber = @itemNumber
ELSE PartNumber = @itemNumber
END

Wie Sie sehen können, bin nicht nur ich, sich dynamisch verändernden Tabelle wähle ich aus, aber da diese beiden Tische wurden zu zwei verschiedenen Zeitpunkten von zwei verschiedenen Personen, die Spaltennamen sind auch unterschiedlich.

So, meine Frage ist: Was ist der beste Weg, dies zu erreichen, da der SQL Server scheint nicht, wie meine Abfrage, die ich konstruiert haben.

Wenn wer sieht, was ich versuche zu tun, können Sie vorschlagen, eine bessere Möglichkeit, dies zu tun, wäre ich ganz Ohr 🙂

  • Während die Menschen in der Regel davon ausgehen, dass "SQL Server" == "MS SQL Server", es ist besser, wenn Sie diese klären in der Frage und in den tags. Ich ändere die tags, zurückzukehren, wenn ich falsch Liege.
  • sqlserver ist der tag für Microsoft SQL Server. Es gibt derzeit kein anderes Produkt mit diesem Namen, und es ist die einzig sinnvolle tag auf SO für es.
InformationsquelleAutor Robert Iver | 2009-01-29
Schreibe einen Kommentar