我又来了。。sql语句的问题。。不知道怎么写好。。大虾们
select
tw_104.DEPCD as ID
,tw_104.HINCD as 商品CD
,tw_104.KANRICD as 管理CD
,ISNULL(tw_104.KIKISCD,0) as 期階層
,GI19TM_002.calcdy as 出荷日
,tw_104.OLDSKADY as 元出荷日
,ISNULL(tw_104.SKAKBN,0) as 出荷区分
,ISNULL(tw_104.SKASRY,0) as 出荷数
from
(select DEPCD
,HINCD
,KANRICD
,SKADY
,KIKISCD
,OLDSKADY
,ISNULL(SKAKBN,0) as SKAKBN
,sum(ISNULL(SKASRY,0)) as SKASRY
from GI19TW_104 where SKAKBN ='0'
group by DEPCD,HINCD,KANRICD,KIKISCD,OLDSKADY,SKAKBN,SKADY) as tw_104
right outer join GI19TM_002 ontw_104.SKADY=GI19TM_002.calcdy
where
GI19TM_002.KASHOCD='021'
and GI19TM_002.KASHOKBN='2'
and GI19TM_002.calcdy between '20070501' and '20070930'这是我现在sql语句,,得到结果的一部分如下
ID 商品CD 管理CD 区分 日历 开始日 区分2 金额
NULL NULL NULL 0 20070501 NULL 0 0
096 1213A001 1000001 0 20070502 20090909 0 200
NULL NULL NULL 0 20070503 NULL 0 0
097 1213A002 1000001 0 20070504 20090908 0 400
NULL NULL NULL 0 20070505 NULL 0 0
NULL NULL NULL 0 20070506 NULL 0 0
NULL NULL NULL 0 20070507 NULL 0 0
-----------------------------------------------
ID 096 和 097 是从别的表里取出来的。 ID 是NULL的时候 是和日历表作右连接得到的。(上面蓝色部分)
想到的结果是;
ID 商品CD 管理CD 区分 开始日 区分2 金额 进行group by
如果不一样 就从红色部分 日历等于20070501开始到20070930 排列
期望结果如下
ID 商品CD 管理CD 区分 日历 开始日 区分2 金额
096 1213A001 1000001 0 20070501 NULL 0 0
096 1213A001 1000001 0 20070502 20090909 0 200
096 1213A001 1000001 0 20070503 NULL 0 0
096 1213A001 1000001 0 20070504 NULL 0 0
096 1213A001 1000001 0 20070505 NULL 0 0
一直到
096 1213A001 1000001 0 20070930 NULL 0 0
097 1213A002 1000001 0 20070501 NULL 0 0
097 1213A002 1000001 0 20070502 NULL 0 0
097 1213A002 1000001 0 20070503 NULL 0 0
097 1213A002 1000001 0 20070504 20090908 0 400
097 1213A002 1000001 0 20070505 NULL 0 0
一直到
097 1213A002 1000001 0 20070930 NULL 0 0
不知道我说的大家明白了吗 希望大家在我的sql修改。。真的摆脱了
------解决方案--------------------目前看晕了,休息会儿。
------解决方案-------------------- 看到就头大。
------解决方案--------------------参考这个帖子,给出表结果,测试数据及想要结果。
http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?72912
------解决方案--------------------好长的sql语句呀