L'Évolution dynamique de ce tableau pour sélectionner à partir avec SQL CAS de déclaration

Je suis en train d'écrire une procédure stockée et selon une certaine valeur de la colonne, je veux être capable de changer ce tableau j'ai sélectionner à partir. Je vais essayer de donner un exemple:

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

Comme vous pouvez le voir, je ne suis pas seulement l'évolution dynamique de la table, je sélectionner à partir, mais depuis ces deux tableaux ont été faites à deux fois par deux personnes différentes, les noms de colonne sont différents.

Donc, ma question est: Quelle est la meilleure façon pour ce faire, étant donné que SQL Server n'a pas l'air d'aimer ma requête, j'ai construit.

Si quelqu'un qui voit ce que je suis en train de faire peut suggérer une meilleure façon de le faire, je serais à toutes les oreilles 🙂

Alors que les gens supposent d'habitude "SQL Server" == "MS SQL Server", c'est mieux si vous clarifier ce point dans la question et dans les tags. Je vais changer les étiquettes, revenir en arrière si je me trompe.
sqlserver est la balise pour Microsoft SQL Server. Il n'existe actuellement aucun autre produit de ce nom, et il est l'étiquette n'est utile que sur DONC pour celle-ci.

OriginalL'auteur Robert Iver | 2009-01-29