declare @Cadena varchar(8000)
select @Cadena = ''
select @Cadena = @Cadena + ',' + COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'Tabla1'
ORDER BY ORDINAL_POSITION
select STUFF(@Cadena, 1, 1, '') as CadenaCampos
Desde SQL Server 2005, se puede solventar ese problema en una sóla consulta, haciendo uso de FOR XML PATH, lo que permite una mejor integración en consultas más complejas:
select STUFF(
(SELECT CAST(',' AS varchar(MAX)) + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'Tabla1'
ORDER BY ORDINAL_POSITION
FOR XML PATH('')
), 1, 1, '') as CadenaCampos
Un ejemplo de esa integración sería el siguiente:
Select Table_Name, STUFF(
(SELECT CAST(',' AS varchar(MAX)) + C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C
where C.TABLE_NAME = T.TABLE_NAME
ORDER BY ORDINAL_POSITION
FOR XML PATH('')
), 1, 1, '') as CadenaCampos
from INFORMATION_SCHEMA.TABLES T
En esta línea se pueden hacer otras cosas más elaboradas, como por ejemplo, construir una sentencia pivot dinámica:
fuente: http://qwalgrande.blogspot.es
No hay comentarios:
Publicar un comentario