sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta de pivote dinámico sin almacenar la consulta como cadena

Respuesta corta: no.

Respuesta larga:

Bueno, eso sigue siendo no . Pero intentaré explicar por qué. A partir de hoy, cuando ejecuta la consulta, el motor de base de datos exige conocer la estructura del conjunto de resultados (cantidad de columnas, nombres de columna, tipos de datos, etc.) que devolverá la consulta. Por lo tanto, debe definir la estructura del conjunto de resultados cuando solicita datos de DB. Piénselo:¿alguna vez ejecutó una consulta en la que no sabría la estructura del conjunto de resultados de antemano?

Eso también se aplica incluso cuando select * , que es solo una sintaxis de azúcar. Al final, la estructura de retorno es "todas las columnas de dicha(s) tabla(s)".

Al ensamblar una cadena, genera dinámicamente la estructura que desea, antes de solicitar el conjunto de resultados. Por eso funciona.

Finalmente, debe tener en cuenta que ensamblar la cadena dinámicamente puede teórica y potencialmente (aunque no probable) obtenga un conjunto de resultados con columnas infinitas. Por supuesto, eso no es posible y fallará, pero estoy seguro de que entendiste las implicaciones.

Actualizar

Encontré esto, que refuerza las razones por las que no funciona.

Aquí :

Seguiré buscando y agregando aquí.