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 SKASRYfrom 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 0097 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修改。。真的摆脱了
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 SKASRYfrom 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 0097 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修改。。真的摆脱了
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语句太多了。 可是项目要求就这样。。哎干IT的都是眼泪。。还望大虾们帮帮忙实现一下