表数据如下:
年份 月份 收入
2011 1月 200
2011 2月 300
2011 3月 500
2012 1月 600
2012 2月 700要求查询结果如下:
年份 1月 2月 3月
2011 200 300 500
2012 600 700 NULL谢谢!
年份 月份 收入
2011 1月 200
2011 2月 300
2011 3月 500
2012 1月 600
2012 2月 700要求查询结果如下:
年份 1月 2月 3月
2011 200 300 500
2012 600 700 NULL谢谢!
解决方案 »
- 求一个基于3层的ASP.NET2.0的网站程序
- 用水晶报表通过调用存储过程时点“打印”与“导出”按钮就没显示了.
- 成绩表+科目表 怎样查询合适的结果 ?求助啊,有多少分给多少
- 快来,看看我这个<a>加runat=server以后怎么绑定呢?
- 关于asp.net2.0跨页面提交数据库参数的问题
- 有没有得到链接速度的代码,如百度MP3里的链接速度(用C#)
- 如何调用不同项目的页面
- GridView 72般绝技 [ASP.NET] (续)
- SqlDataSource实现排序列
- 在线等:在global.asa里设置session时,用户名和密码的正确性一般也是在这里验证吗?
- ASP中数据库插入出现问题,附代码
- 求 视频网站制作原理
2月=isnull(sum(case 月份 when 1月 then 收入 end),0),
3月=isnull(sum(case 月份 when 3月 then 收入 end),0)
from 表
group by 年份
没测试。你试试
(年份 int, 月份 varchar(50), 收入 int)INSERT INTO Test20120522
SELECT 2011, '1月', 200
UNION
SELECT 2011, '2月', 300
UNION
SELECT 2011, '3月', 500
UNION
SELECT 2012, '1月', 600
UNION
SELECT 2012, '2月', 700--- sql 2000SELECT 年份, min(case when 月份 = '1月' then 收入 else null end) as '1月',
min(CASE WHEN 月份 = '2月' then 收入 else NULL end) as '2月',
min(CASE WHEN 月份 = '3月' then 收入 else NULL end) as '3月'
FROM test20120522 GROUP BY 年份--- sql 2005SELECT * FROM test20120522 PIVOT(sum(收入) for 月份 in ([1月], [2月], [3月])
insert into t
select '2011','1月',200 union all
select '2011','2月',300 union all
select '2011','3月',500 union all
select '2012','1月',600 union all
select '2012','2月',700--select * From @tdeclare @sql varchar(8000)
set @sql='select 年份'
select @sql=@sql+ ',max(case 月份 when '''+月份+''' then 收入 end) as ['+月份+']' from (select distinct 月份 from t) as A
set @sql=@sql+' from t group by 年份 order by 年份'exec (@sql)
drop table t
/*
年份 1月 2月 3月
------ ------ ------ ------
2011 200 300 500
2012 600 700 null
(2 个数据列受到影响)
*/