在2000中使用Case 语句来实现,在2005中用unpivot来实现.
解决方案 »
- 关于多表联合查询
- 表中的代码如何替换用另一表中对应的值来替换?
- 用convert转换日期格式是怎样的?????
- 如何把某个数据库中的全部内容(包括表中的数据)导出成SQl脚本
- 如何替换ntext类型的数据?
- SQL rand()函数
- 有关SQL语法的问题!
- 问个SQL2005的错误日志
- sqlserver2008 R2(32位)安装在windows server 2008 R2(64位)上,sqlserver最多可使用多大内存?
- 急! ! !急! ! !急! ! !一条SQL语句:查询表中的一列的第一个字母
- 一个有关事务的问题,请大家帮忙!(就剩最后25分了,一定加分)
- sqlserver 2005下建立的数据库库文件如何附加到SQLSERVER2000中?
create table #t (日期 int,水费 int ,电费 int,气费 int)
insert #t
select 20060303,100,110,120
UNION ALL
select 20060304,101,102,103
SELECT A.项目,'20060303'=Sum(A.[20060303]),'20060304'=sum(A.[20060304])
FROM (
select 项目='水费'
,'20060303'=CASE WHEN 日期=20060303 THEN 水费 ELSE 0 END
,'20060304'=CASE WHEN 日期=20060304 THEN 水费 ELSE 0 END
FROM #t
UNION ALL
select 项目='电费'
,'20060303'=CASE WHEN 日期=20060303 THEN 电费 ELSE 0 END
,'20060304'=CASE WHEN 日期=20060304 THEN 电费 ELSE 0 END
FROM #t
UNION ALL
select 项目='气费'
,'20060303'=CASE WHEN 日期=20060303 THEN 气费 ELSE 0 END
,'20060304'=CASE WHEN 日期=20060304 THEN 气费 ELSE 0 END
FROM #t
) A
GROUP By A.项目
结果:
-- 项目 20060303 20060304
-- 电费 110 102
-- 气费 120 103
-- 水费 100 101