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

这样的查询如何做?
数据库表如下

表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