tablas resueltos registros ordenar ejercicios ejemplos datos consultas consultar complejas sql sql-server sql-server-2008-r2

resueltos - ordenar registros sql



Cómo recuperar los encabezados de columna de una consulta de selección? (3)

¿Cómo es posible recuperar encabezados de columna de una consulta de selección como una sola columna en SQL Server? (se prefiere recuperar el tipo de datos de las columnas)

Ejemplo de consulta:

select a.PartId, a.PartName, b.GroupName from Parts as a inner join Groups as b on a.GroupRef = b.GroupId

Resultado Esperado:

Columns -------- PartId PartName GroupName


Sé que esto no funcionará en SQL Server 2008 pero para SQL Server 2012+ puede usar sys.dm_exec_describe_first_result_set para obtener todos los metadatos sobre el conjunto de resultados.

SQLFiddleDemo

DECLARE @tsql NVARCHAR(MAX) = N''select a.PartId , a.PartName , b.GroupName from Parts as a inner join Groups as b on a.GroupRef = b.GroupId''; SELECT name AS [Columns] FROM sys.dm_exec_describe_first_result_set(@tsql, NULL, 1)


Una forma es crear una tabla temporal con el esquema del conjunto de resultados y luego consultar la tabla de esquema de tempdb para obtener los nombres y detalles de la columna. Puede obtener todos los detalles necesarios.

select a.PartId , a.PartName , b.GroupName into #yourtable from Parts as a inner join Groups as b on a.GroupRef = b.GroupId where 1=2 SELECT c.name as columnname,t.name as datatype FROM tempdb.sys.columns c inner join tempdb.sys.systypes as t on t.xtype = c.system_type_id WHERE [object_id] = OBJECT_ID(N''tempdb..#yourtable'');


SELECT ''PartId'', ''PartName'', ''GroupName'' UNION ALL select a.PartId , a.PartName , b.GroupName from Parts as a inner join Groups as b on a.GroupRef = b.GroupId