select SUM(CASE WHEN day(PZ01) = 1 THEN PZ02 ELSE 0 END) AS PZ02,SUM(CASE WHEN day(PZ01) = 2 THEN PZ02 ELSE 0 END) AS PZ02
from ##pzx where convert(varchar(7),pz01,120)='2009-09'group by pz01 order by pz01
運行后結果:
pz02 pz05 pz02 pz05
138.92 83.59 0 0
0 0 102.92 77.99
0 0 0 0
....現在想將結果格式調整為:
1 2
pz02 138.91 102.92
pz05 83.59 77.99不要把例子我看,我對這例子看了半天了。寫出來的sql還是不能達到要求。
一天35個 字段賦值,31天*35。鬱悶死!
哪位把正確的sql我參照一下。我還得往下排!
from ##pzx where convert(varchar(7),pz01,120)='2009-09'group by pz01 order by pz01
運行后結果:
pz02 pz05 pz02 pz05
138.92 83.59 0 0
0 0 102.92 77.99
0 0 0 0
....現在想將結果格式調整為:
1 2
pz02 138.91 102.92
pz05 83.59 77.99不要把例子我看,我對這例子看了半天了。寫出來的sql還是不能達到要求。
一天35個 字段賦值,31天*35。鬱悶死!
哪位把正確的sql我參照一下。我還得往下排!
解决方案 »
- 写一条sql语句去除一张表中的重复数据
- mssql server 2005与sql server 2005是一样的吗?前面的ms是什么意思呀?小弟刚学,见笑了哈,那位前辈能指教一下哈!
- SQL.2005,Group by后数据异常
- 删除重复记录的问题....
- sql server2008帮助文档中的问题
- 哇,好久不来都换心面容了,散分给大家!!出一道题目大家一块帮忙看看,
- SQL Server中企业管理器出现“1069登录失败”,怎么办,帮帮我,谢谢!
- 请问,(启动SQLServer2000的“服务管理器”或“网络实用工具”可以看到)...
- 200分求两个表的资料替换的问题
- 关于增量备份与差异备份
- SELECT集合最大值及相应字段
- sql 2005 使用问题?
pz01 pz02 pz03 pz04 pz05
2009-09-01 00:00:00.000 138.92 180.28 1173 83.59
2009-09-02 00:00:00.000 102.92 160.97 973 77.99
2009-09-03 00:00:00.000 132.99 167.13 1023 71.51
我現在想將格式轉換成
1 2 3
pz02 138 102.92 132.99
pz05 83.59 77.99 71.51因為報表中要跑月份的,所以,,,
我也是想先在數據庫中把數據都擺好在賦值到報表上去。
縱向字段有35個,橫向天數31天
/*
表tb,数据如下:
项目种类 业绩 提成
洗吹类 200 10
外卖 100 5
合计 300 15
转换成:
项目种类 洗吹类 外卖 合计
业绩 200 100 300
提成 10 5 15
*/create table tb
(
项目种类 varchar(10),
业绩 int,
提成 int
)insert into tb(项目种类,业绩,提成) values('洗吹类',200,10)
insert into tb(项目种类,业绩,提成) values('外卖' ,100,5)
insert into tb(项目种类,业绩,提成) values('合计' ,300,15)
goselect 项目种类,sum(洗吹类) as 洗吹类 , sum(外卖) as 外卖 , sum(合计) as 合计 from
(
select 项目种类 = '业绩',
洗吹类 = case when 项目种类 = '洗吹类' then 业绩 else 0 end,
外卖 = case when 项目种类 = '外卖' then 业绩 else 0 end,
合计 = case when 项目种类 = '合计' then 业绩 else 0 end
from tb
union all
select 项目种类 = '提成' ,
洗吹类 = case when 项目种类 = '洗吹类' then 提成 else 0 end,
外卖 = case when 项目种类 = '外卖' then 提成 else 0 end,
合计 = case when 项目种类 = '合计' then 提成 else 0 end
from tb
) m
group by 项目种类
order by 项目种类 descdrop table tb/*
项目种类 洗吹类 外卖 合计
-------- ----------- ----------- -----------
业绩 200 100 300
提成 10 5 15(所影响的行数为 2 行)
*/
gocreate table tb (pz01 varchar(10),pz02 numeric(10,2),pz03 numeric(10,2),pz04 numeric(10,2),pz05 numeric(10,2))
insert into tb
select '2009-09-01', 138.92, 180.28, 1173, 83.59
union all
select '2009-09-02', 102.92, 160.97, 973, 77.99
union all
select '2009-09-03', 132.99, 167.13, 1023, 71.51
select * from tb
/*
pz01 pz02 pz03 pz04 pz05
-------------------------------------------------
2009-09-01 138.92 180.28 1173.00 83.59
2009-09-02 102.92 160.97 973.00 77.99
2009-09-03 132.99 167.13 1023.00 71.51
*/exec p_zj 'tb', 'pz01' , 'pz'
/*
pz 2009-09-01 2009-09-02 2009-09-03
------------------------------------------------------
pz02 138.92 102.92 132.99
pz03 180.28 160.97 167.13
pz04 1173.00 973.00 1023.00
pz05 83.59 77.99 71.51
*/go
drop table tb
go
drop proc p_zj
exec p_zj 'tb', 'pz01' , 'pz'
這段是什麽意思?為什麽我在這報錯?