日期:2014-05-17  浏览次数:20606 次

如何用A表数据,来控制查询B表时列的个数。
如何用A表数据,来控制查询B表时,列的个数。
例如:
我想查询B表里的数据,当A表有一条数据时,我就查询B表里的相应的一列,当A表里有两条数据,我就查询B表里相应的两列的数据。
表数据控制查询列

------解决方案--------------------
你的意思好像是说B表存是A表的字段的名字    需要的是查询出B表的字段名字在A表中的字段是不??
是的话动态SQL语句就好了

declare @columnname varchar(200)
set @columnname=''
select @columnname=','+name from b
set @columnname=right(@columnname,len(@columnname)-1)
exec('select '+@columnname+' from A')

------解决方案--------------------
动态显式表的列:
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT  @s = @s + ',' + QUOTENAME(name)
FROM    syscolumns
WHERE   id = OBJECT_ID('表名')
        AND name NOT IN ( '不希望显式的列' )
SET @s = STUFF(@s, 1, 1, '')
EXEC('select '+@s+' from 表名  ')