Estoy intentando escribir un procedimiento almacenado y, dependiendo de un cierto valor de columna, deseo poder cambiar la tabla de la que selecciono. Voy a tratar de dar un ejemplo:Cambiando dinámicamente la tabla para seleccionar con la sentencia SQL CASE
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
Como se puede ver, no sólo estoy cambiando dinámicamente la tabla de selecciono, pero dado que estas dos tablas se hicieron en dos momentos diferentes por dos personas diferentes, la los nombres de las columnas también son diferentes.
Entonces, mi pregunta es: ¿Cuál es la mejor manera de lograr esto, ya que SQL Server no parece que me gusta mi consulta que he construido.
Si cualquiera que vea lo que estoy tratando de hacer puede sugerir una mejor manera de hacer esto, sería todo oídos :-)
Si bien las personas suelen suponer "SQL Server" == "MS SQL Server", es mejor si aclara esto en la pregunta y en las etiquetas. Estoy cambiando las etiquetas, revertir si estoy equivocado. –
sqlserver es la etiqueta para Microsoft SQL Server. Actualmente no hay otro producto con ese nombre, y es la única etiqueta útil en SO para ello. –