请高手帮忙写一个查询语句
有这样两个表:
表A名 : Sales
字段 :年月日, 金额1,金额2,金额3,金额4,金额5,金额6,金额7,金额8,金额9。
表B名 : 金额类别
字段: 金额ID,金额类别名称
表B中的数据:
-------------------------------------------------
金额ID,金额类别名称
1 AAAAA
2 BBBBB
3 CCCCC
4 DDDDD
5 EEEEE
6 FFFFF
7 GGGGG
8 HHHHH
9 IIIII
现在要进行这样的查询:
表A中有9个字段,这9个字段对应在表B中的编号是1~9
如果表B中有金额ID为1的记录,则以AAAAA作为表A的金额1的显示用的名字,值还是用表A的金额1的值,就是要下面这样的效果:
年月日, AAAAA,BBBBB,CCCCC,DDDDD,EEEEE,FFFFF,GGGGG, HHHHH, IIIII
20070101 15.00 20.00 10.00 10.00 20.00 12.00 12.00 20.00 30.00
其中的AAAAA~IIIII都是要根据表B中的内容判断是否显示的。
希望各位大侠出手帮忙,多谢了!!
------解决方案--------------------declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ',[ '+a.name+ '] as [ '+b.金额类别名称+ '] ' from syscolumns a,金额类别 b where a.colid=b.金额ID+1 and a.id=object_id( 'Sales ')
set @sql= 'select 年月日 '+@sql+ ' from Sales '
exec(@sql)
------解决方案--------------------用colid判断有点危险
------解决方案--------------------create table Sales(年月日 varchar(10),金额1 int,金额2 int,金额3 int,金额4 int,金额5 int,金额6 int,金额7 int,金额8 int,金额9 int)
create table 金额类别(金额ID int,金额类别名称 varchar(10))
insert into 金额类别 select 1, 'AAAAA '
insert into 金额类别 select 2, 'BBBBB '
insert into 金额类别 select 3, 'CCCCC '
insert into 金额类别 select 4, 'DDDDD '
insert into 金额类别 select 5, 'EEEEE '
insert into 金额类别 select 6, 'FFFFF '
insert into 金额类别 select 7, 'GGGGG '
insert into 金额类别 select 8, 'HHHHH '
insert into 金额类别 select 9, 'IIIII '
go
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ',[ '+a.name+ '] as [ '+b.金额类别名称+ '] ' from syscolumns a,金额类别 b where a.colid=b.金额ID+1 and a.id=object_id( 'Sales ')
set @sql= 'select 年月日 '+@sql+ ' from Sales '
exec(@sql)
go
/*
年月日 AAAAA BBBBB CCCCC DDDDD EEEEE FFFFF GGGGG HHHHH IIIII
---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
*/
drop table sales,金额类别
go
------解决方案--------------------declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ',[ '+a.name+ '] as [ '+b.金额类别名称+ '] ' from syscolumns a,金额类别 b where a.name= '金额 '+cast(b.金额ID as varchar) and a.id=object_id( 'Sales ')
set @sql= 'select 年月日 '+@sql+ ' from Sales '
exec(@sql)
------解决方案--------------------