| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1103 人关注过本帖
标题:一个比较难的算法
取消只看楼主 加入收藏
jerryzhao
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-5-29
收藏
得分:0 
大哥,我用你的语句试了试如下效果
2006-01-04 00:00:00.000 china hid 2.00000
2006-01-04 00:00:00.000 ulc el 3.00000
2006-01-05 00:00:00.000 china el 5.00000
2006-01-05 00:00:00.000 china hid 4.00000
2006-01-06 00:00:00.000 china el 6.00000
2006-01-09 00:00:00.000 ulc el 7.00000
2006-01-10 00:00:00.000 china el 8.00000
2006-01-11 00:00:00.000 china el 9.00000
跟我要的
order_date type family_code Tamount
2006-1-4 china hid 2
2006-1-4 china el 0
2006-1-4 ulc el 3
2006-1-5 china hid 2+4=6
2006-1-5 china el 0+5=5
2006-1-5 ulc el 3+0=3
2006-1-6 china hid 2+4+0=6
2006-1-6 china el 0+5+6=11
2006-1-6 ulc el 3+3+0=6
2006-1-9 china hid 2+4+0+0=6
2006-1-9 china el 0+5+6+0=11
2006-1-9 ulc el 3+3+0+7=13
不一样啊,你上面的语句只把对应日期有的type和family_code求和算出来了。
数据不全面阿
2006-06-01 10:48
jerryzhao
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-5-29
收藏
得分:0 

可不可以不用group by,而是直接用分类的方法
select order_date,
(

select sum(Damount)
from #tmp2
where order_date between
(
select startdate from #tmp3
where a.order_date=#tmp3.order_date
)
and
(
select enddate from #tmp3
where a.order_date=#tmp3.order_date
)
and
#tmp2.type='china'
and
#tmp2.family_code='el'
) as Tceamount,
(

select sum(Damount)
from #tmp2
where order_date between
(
select startdate from #tmp3
where a.order_date=#tmp3.order_date
)
and
(
select enddate from #tmp3
where a.order_date=#tmp3.order_date
)
and
#tmp2.type='china'
and
#tmp2.family_code='hid'
) as Tchamount,
(

select sum(Damount)
from #tmp2
where order_date between
(
select startdate from #tmp3
where a.order_date=#tmp3.order_date
)
and
(
select enddate from #tmp3
where a.order_date=#tmp3.order_date
)
and
#tmp2.type='ulc'

) as Tuamount
from #tmp3 a
因为我的类型就只有 china-el,china-hid,ulc-el三种类型,所以我直接作为三个字段来查询,不过我这样查询出来的结果不对啊?不知道哪里有问题~~帮忙看看吧,谢谢!

2006-06-01 14:39
jerryzhao
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-5-29
收藏
得分:0 
我要的只是 对应日期order_date的三个分类汇总值,至于是不是分为3个字段来显示无所谓的,这是我执行后得到的数据,肯定是不对的阿~ 可是不知道怎么改

2006-01-04 00:00:00.000 NULL 2.00000 3.00000
2006-01-05 00:00:00.000 5.00000 6.00000 3.00000
2006-01-06 00:00:00.000 11.00000 6.00000 3.00000
2006-01-09 00:00:00.000 11.00000 6.00000 10.00000
2006-01-10 00:00:00.000 19.00000 6.00000 10.00000
2006-01-11 00:00:00.000 28.00000 6.00000 10.00000

2006-06-01 15:26
jerryzhao
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-5-29
收藏
得分:0 
就是这样了,呵呵~~ 谢谢,计算错误,不好意思!要的就是这样的效果,不过你说的游标的话,有空再研究一下。
2006-06-01 16:16
快速回复:一个比较难的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016752 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved