日期:2014-05-18 浏览次数:20755 次
--> 测试数据: 商品信息表 create table 商品信息表(供应商 int,商品名称 varchar(10),进货数量 int,结存 int) insert into 商品信息表 select 1,'甲天下牛奶',10,5 union all select 1,'伊利牛奶',20,10 union all select 2,'苹果',20,10 union all select 2,'香蕉',30,15 --> 测试数据: 字段表 create table 字段表(供应商 int,字段名称 varchar(8),显示 int) insert into 字段表 select 1,'商品名称',1 union all select 1,'进货数量',1 union all select 1,'结存',0 union all select 2,'商品名称',0 union all select 2,'进货数量',1 union all select 2,'结存',0 declare @sql varchar(1000) select @sql=isnull(@sql+',','')+字段名称 from 字段表 where 供应商=1 and 显示=1 exec('select 供应商,'+@sql+' from 商品信息表 where 供应商=1')
------解决方案--------------------
/******************************************************************************/
/*回复:20080519103总:00023 */
/*主题:根据字段表中“显示”字段 */
/*作者:二等草 */
/******************************************************************************/
set nocount on
--数据--------------------------------------
create table [商品信息表] ([供应商] int,[商品名称] varchar(10),[进货数量] int,[结存] int)
insert into [商品信息表] select 1,'甲天下牛奶',10,5
insert into [商品信息表] select 1,'伊利牛奶',20,10
insert into [商品信息表] select 2,'苹果',20,10
insert into [商品信息表] select 2,'香蕉',30,15
create table [字段表] ([供应商] int,[字段名称] varchar(8),[显示] int)
insert into [字段表] select 1,'商品名称',1
insert into [字段表] select 1,'进货数量',1
insert into [字段表] select 1,'结存',0
insert into [字段表] select 2,'商品名称',0
insert into [字段表] select 2,'进货数量',1
insert into [字段表] select 2,'结存',0
go
--代码--------------------------------------
declare @s varchar(8000),@gys int
select @gys = 1
select @s = 'select 供应商'
select @s = @s+','+字段名称 from 字段表 where 供应商 = 1 and 显示 = 1
select @s = @s+' from 商品信息表 where 供应商 = '+rtrim(@gys)
exec(@s)
go
/*结果--------------------------------------
供应商 商品名称 进货数量
----------- ---------- -----------
1 甲天下牛奶 10
1 伊利牛奶 20
--清除------------------------------------*/
drop table 字段表,商品信息表