我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。
例如 :
table_levels level | name | [selected-columns] 1 | startdate | start_date 1 | end date | end_date 1 | contract | contract
所以,如果我做以下
select column from table_levels where level = '1'
然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。
香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。
select (select [selected-columns] from table_levels where nwlevel = '1') from table_results
我试图以一种动态方式构建一个sql查询,该查询可以通过我放在table_levels表中的任何列进行更改。
table_levels
从理论上讲,这应与以下sql查询的行为相同
select start_date, end_date, contract from table_results
通过略微更改@lobo的内容,我可以使其正常工作。
DECLARE @listStr varchar(MAX); set @liststr = ( select [column] + ',' from dbo.columns where nwlevel = '1' for xml path('') ) DECLARE @query varchar(MAX); set @query = ( 'SELECT ' + LEFT(@listStr, LEN(@listStr)-1) + ' FROM staff' ) execute(@query)