注册 登录
编程论坛 SQL Server论坛

sql 问题

bj2008huwei 发布于 2010-05-19 21:22, 1175 次点击
Sql 中如何按天、周、月、季度、年 进行分组查询,查询后如果产生一个虚拟表在后台如何取得数据呢??

如下格式:   
注:要考虑不同的年份。

年 未清金额 未清总计 总盈利 总损失 已结算总计
2010 6,682,318.11 34   
2011 364,477,477 2   


月 未清金额 未清总计 总盈利 总损失 已结算总计
3-2010 71,534.1 19
4-2010 15,274,441.1 14
12-2010 235,56 1
5-2011 15,274,441.1 2   


季度    未清金额      未清总计 总盈利 总损失 已结算总计
1-2010 71,534.1         19
2-2010 15,274,441.1     13         1            1
4-2010 15,274,441.1 1    1
2-2011 25641.32 2        1              1         1

未清余额为(按分组条件)得到的总计金额,其中季度那按1-3为第一季度以此划分   同时表中的各个字段的不同值 也要差出来 特别是id列 ,
注意每个字段要按照上面的格式哦!
要根据状态(status判断)未清为O 损失为L   赢取为W
表如下两图(一个表的):
这些全在一个表中,请各位虾帮小弟我想想办法,
初来 只有那么点分了  
谢谢了!
12 回复
#2
bj2008huwei2010-05-20 09:22
顶……
#3
bj2008huwei2010-05-20 10:46
  帮小弟我  弄下了 急…… 我新手 刚学不久
#4
gdy03492010-05-20 11:24
你建表的时候日期字段建为年月,如201005这样子
select substr(rq,0,4) ,sum(je) from table group by substr(rq,0,4) --按年汇总
select rq ,sum(je) from table group by rq --按月汇总
#5
bj2008huwei2010-05-20 11:58
那个表已经固定了 不能更改了 放在服务器上的   

要怎样弄出上面 那样的效果呢??
#6
bj2008huwei2010-05-20 15:30
只有本站会员才能查看附件,请 登录
#7
源本英明C2010-05-20 16:16
回复 6楼 bj2008huwei
四楼说的是个好方法,但是,如果你数据已经固定,那么,你在后台取数据将是一个很复杂的问题,不是一两下能解决的,好好学习吧。我也是新手!
#8
bj2008huwei2010-05-21 17:20
  来个人啊 !  解决下拉
#9
bj2008huwei2010-05-21 17:47
小妹 在此谢过了 ……
#10
c1_wangyf2010-05-25 10:23
把数据导出来,也许大家可以帮忙试试?!!
#11
aei1352010-05-25 21:22
按年汇总 year(日期)
按月汇总 month(日期)+'-'+year(日期)
按季度汇总 case when month(日期) in(1,2,3) then 1+'-'+year(日期)
            when month(日期) in(4,5,6) then 2+'-'+year(日期)
            when month(日期) in(7,8,9) then 3+'-'+year(日期)
            when month(日期) in(10,11,12) then 4+'-'+year(日期)
            end
别的自己写了
#12
aei1352010-05-26 08:51
纠正
按年汇总 year(日期)
按月汇总 convert(varchar(2)+month(日期))+'-'+convert(varchar(4),year(日期))
按季度汇总 case when month(getdate()) in(1,2,3) then convert(char(1),1)+'-'+convert(varchar(4),year(getdate()))
            when month(getdate()) in(4,5,6) then convert(char(1),2)+'-'+convert(varchar(4),year(getdate()))
            when month(getdate()) in(7,8,9) then convert(char(1),3)+'-'+convert(varchar(4),year(getdate()))
            when month(getdate()) in(10,11,12) then convert(char(1),4)+'-'+convert(varchar(4),year(getdate()))
            end
#13
yinhao3152010-05-27 09:11
看不懂
1