我有一个表(DataImportTable),其中包含MainDataTable的列名作为其记录 - 请参阅图像: Target Column Table
我想在查询中使用上述列名来从MainDataTable中查找它们。
显然不起作用的查询可以解释我想要实现的目标,可以在下面看到:
select (select TargetColumn from DataImportTable) from MainDataTable
我希望这是有道理的,并且有人可以提供帮助。
提前谢谢!
答案 0 :(得分:0)
使用动态SQL 来获取其他表格中的列
Select row_number() over( order by TargetColumn ) as RowNumber,TargetColumn into
#temp from DataImportTable where TargetColumn is not null
Declare @Columnslist varchar(max),@i int
set @i = 1
while @i<= (select Count(*) from #temp)
begin
(SELECT @Columnslist = isnull(@Columnslist,'')+'['+(select TargetColumn from #temp
where RowNumber = @i)+'],')
set @i = @i + 1;
end
SELECT @Columnslist = LEFT(@Columnslist, LEN(@Columnslist) - 1)
Declare @select_cmd varchar(max)
set @select_cmd='select '+@Columnslist +' From MainDataTable'
EXEC(@select_cmd);
这answer使其更简单
exec('select '+(select Stuff((select ','+TargetColumn from DataImportTable
for xml path('')),1,1,''))+' From MainDataTable')
答案 1 :(得分:0)
你可以这样做:
declare @query varchar(max);
declare @columns varchar(max);
set @columns = (select TargetColumn + ', ' from DataImportTable for xml path(''));
set @query = 'select ' + left(@columns, len(@columns) -1) + ' from MainDataTable';
exec(@query);
第一个@columns
被构造为TargetColumn
的值,以逗号分隔(带尾随逗号)。然后,这些列用于构造一个查询(left-thing删除尾随的逗号),然后执行该查询。
答案 2 :(得分:-1)
尝试从MainDataTable中选择(从DataImportTable中选择TargetColumn)作为TargetColumn What's wrong with this MySQL query? SELECT * AS `x`, how to use x again later?