这样的查询如何做?
数据库表如下
表1
编号
AAA
BBB
CCC
表2
月份 编号 金额
200701 AAA 10
200701 BBB 11
200701 CCC 12
200702 AAA 100
200702 BBB 110
200702 CCC 120
如何通过查询获取这样的表
200701 200702
AAA 10 100
BBB 11 110
CCC 12 120
------解决方案--------------------如何通过查询获取这样的表
200701 200702
AAA 10 100
BBB 11 110
CCC 12 120
------------------
我怎么看不懂这个结构
你的表1根本没用
------解决方案--------------------呵呵,行列转换
------解决方案--------------------关注一下。楼主的这种表结构怕是查不出来吧
------解决方案--------------------select * from 表2 where (select 编号 from 表1) = 编号
------解决方案--------------------重写sql语句,然后重新排序
------解决方案--------------------declare @sql varchar(8000)
set @sql = 'select b.* from 表1 a left join (select 编号 '
select @sql = @sql + ',sum(case 月份 when ' ' ' + 月份 + ' ' ' then 金额 else 0 end) as [ ' + 月份 + '] ' from 表2 group by 月份
exec(@sql + ' from 表2 group by 编号) b on a.编号=b.编号 ')
------解决方案--------------------樓上.
------解决方案--------------------是动态生成SQL语句
你在exec之前print 一下就看出来了
print (@sql + ' from 表2 group by 编号) b on a.编号=b.编号 ')
------解决方案--------------------樓上答案好象不對 隻能一個月一個月的查
------解决方案----------------------建表1
create table 表1
(编号 varchar(30))
--插入数据
insert into 表1
select 'AAA ' union all
select 'BBB ' union all
select 'CCC '
--建表2
create table 表2
(月份 varchar(6), 编号 varchar(30),金额 int)
insert into 表2
select '200701 ', 'AAA ',10 union all
select '200701 ', 'BBB ',11 union all
select '200701 ', 'CCC ',12 union all
select '200702 ', 'AAA ',100 union all
select '200702 ', 'BBB ',110 union all
select '200702 ', 'CCC ',120 union all
select '200702 ', 'DDD ',110 union all
select '200702 ', 'DDD ',120