早上好,长期潜伏,第一次海报。 我正在编写一个存储过程,以从一个SELECT语句中获取结果,并使用该输出来构建另一个SELECT语句。问题是我找不到实现此目的的机制或代码。将结果分配给变量似乎不是一种选择,因为SQL不支持数组(据我所知)。
+----+-------------+-------------+
| ID | ___$seqval | Column_Name |
+----+-------------+-------------+
| 1 | 0x000000E10 | EnvType |
| 2 | 0x000000E10 | DataType |
| 3 | 0x000000E10 | DateMod |
+----+-------------+-------------+
试图到达; 选择Column_name(1),Column_name(2).. 来自tblServer_Data
总共可能返回20列。
答案 0 :(得分:0)
这将为选定表中的列提供SELECT语句。
SELECT 'SELECT ' + STUFF(
(SELECT ',' + c.column_name from
(SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS c
where c.TABLE_NAME = your_table) c
for xml path ('')),1,1,'') + ' FROM ' + your_table
答案 1 :(得分:0)
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME([Column_Name])
FROM Table1 c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SELECT @cols as Columns; -- just for debug
set @query = 'SELECT [ID], ' + @cols + ' from
(
select 1 as ID
, [seqval]
, [Column_Name]
from Table1
) x
pivot
(
max([seqval])
for [Column_Name] in (' + @cols + ')
) p '
SELECT @query as Query; -- just for debug
execute(@query);
输出
然后您可以对该输出执行SELECT