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.
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