Cada vez que se encuentra tratando de hacer las cosas con conjuntos de varias columnas, se Probablemente tu esquema esté equivocado.
Casi con seguridad sería más fácil separar A, B, C y D en filas separadas en una tabla separada, vincularlas a la fila en la tabla original y crear una consulta de tipo JOIN
.
Alternativamente, si sólo uno es siempre no nulo, optaría por dos columnas, el tipo (A, B, C o D) y el valor. Entonces no estás desperdiciando las columnas en cada fila, y las consultas son infinitamente más fáciles (suponiendo que los tipos sean los mismos).
Sin embargo, usted puede haces de esta manera con case
:
select case
when A is not null then 'A'
when B is not null then 'B'
when C is not null then 'C'
else 'D'
end
from ...
La sintaxis puede no ser exactamente correcta, tendrá que mirar hacia arriba. Puede iniciar sesión y es algo que suele hacer ya que lo considero un (funciones por fila en seleccione Nunca y escala) mala idea.
consultas SQL sólo pueden valores, nunca volver columnas. Por supuesto, puede interpretar el valor como un nombre de columna. –
sí, usted está en lo correcto, estoy considerando que como una columna contiene un valor no nulo, esa es la columna que me interesa. – Darknight
Esto parece una idea muy mala – finnw