按過去四週銷售件排或倒排序
STOCK_NO8 款号
FIRSTWEEK 進貨週數(由進貨首日計算除7天)
TTL_SI 累計進货件
BALANCE 現庫存件
W201013 2010第13週銷售件
W201012 2010第12週銷售件
W201011 2010第11週銷售件
W201010 2010第10週銷售件
WEEK_TOTAL 過去四週銷售件
件成本
成本 只計新季貨
新貨成本% 只計新季貨以上需求中,进货周期,怎么求出当前时间是进货后的第几周
还有就是周期销售件中,是求当前星期的上四个星期的销售件,怎么写哦,研究了两个小时,搞不懂!
大家帮帮忙,我先谢谢了!
STOCK_NO8 款号
FIRSTWEEK 進貨週數(由進貨首日計算除7天)
TTL_SI 累計進货件
BALANCE 現庫存件
W201013 2010第13週銷售件
W201012 2010第12週銷售件
W201011 2010第11週銷售件
W201010 2010第10週銷售件
WEEK_TOTAL 過去四週銷售件
件成本
成本 只計新季貨
新貨成本% 只計新季貨以上需求中,进货周期,怎么求出当前时间是进货后的第几周
还有就是周期销售件中,是求当前星期的上四个星期的销售件,怎么写哦,研究了两个小时,搞不懂!
大家帮帮忙,我先谢谢了!
第二个问题解决方案
SELECT SUM(DECODE(CEIL((SYSDATE - T.销售日期) / 7) , 0, T.销售数, 0)) AS 过去第1周销售,
SUM(DECODE(CEIL((SYSDATE - T.销售日期) / 7) , 1, T.销售数, 0)) AS 过去第2周销售,
SUM(DECODE(CEIL((SYSDATE - T.销售日期) / 7) , 2, T.销售数, 0)) AS 过去第3周销售,
SUM(DECODE(CEIL((SYSDATE - T.销售日期) / 7) , 3, T.销售数, 0)) AS 过去第3周销售
FROM 销售明细表 T是以当前日期反推的一周,假设当前是星期3,则过去第一周统计数为上周3至本周2
举个例子,求上个星期的。with as里面的是测试数据
WITH tt AS(
SELECT DATE'2010-4-11' rq,11 amount FROM dual
UNION ALL SELECT DATE'2010-4-17',20 FROM dual)SELECT *
FROM tt
WHERE rq>=trunc(SYSDATE,'iw')-7
and rq<trunc(sysdate,'iw')
from (select DD.SHOP_CODE,DD.COM_ID,DD.ITEM_CODE,
sum(decode(ceil((add_months(sysdate,-12)-dh.inv_date)/7),0,dh.sell_qty,0)) as "第一周",
sum(decode(ceil((sysdate-dh.inv_date)/7),1,dh.sell_qty,0)) as "第二周",
sum(decode(ceil((sysdate-dh.inv_date)/7),2,dh.sell_qty,0)) as "第三周",
sum(decode(ceil((sysdate-dh.inv_date)/7),3,dh.sell_qty,0)) as "第四周",
(sum(decode(ceil((add_months(sysdate,-12)-dh.inv_date)/7),0,dh.sell_qty,0))+sum(decode(ceil((sysdate-dh.inv_date)/7),0,dh.sell_qty,0))
+sum(decode(ceil((sysdate-dh.inv_date)/7),0,dh.sell_qty,0))+sum(decode(ceil((sysdate-dh.inv_date)/7),0,dh.sell_qty,0))) as "四周总数"
from dinv_hdr dh inner join dinv_dtl dd on dh.com_id=dd.com_id and dh.inv_num=dd.inv_num GROUP BY DD.COM_ID,DD.SHOP_CODE,DD.ITEM_CODE) s
left join lot l on l.com_id=s.com_id and l.ware_code=s.shop_code and l.item_code=s.item_code
left join lot_log ll on l.com_id=ll.com_id and l.ware_code=ll.ware_code and l.item_code=ll.com_code我想取最小的l.LASTIN日期字段,因为同款货品可能多次进货,取最小的时间再除以7!怎么取~!
from (select DD.SHOP_CODE,DD.COM_ID,DD.ITEM_CODE,
NVL(sum(dh.sell_qty),0) as "前一周",
NVL(sum(dh.sell_qty),0) as "前二周",
NVL(sum(dh.sell_qty),0) as "前三周",
NVL(sum(dh.sell_qty),0) as "前四周",
(sum(dh.sell_qty)+sum(dh.sell_qty)
+sum(dh.sell_qty)+sum(dh.sell_qty)) as "四周总数"
from dinv_hdr dh inner join dinv_dtl dd on dh.com_id=dd.com_id and dh.inv_num=dd.inv_num
where case
when to_char(sysdate,'day') ='星期一' then (dh.inv_date >= sysdate -7 and dh.inv_date<=sysdate -6)
when to_char(sysdate,'day') ='星期二' then (dh.inv_date >= sysdate -8 and dh.inv_date<=sysdate -6)
when to_char(sysdate,'day') ='星期三' then (dh.inv_date >= sysdate -9 and dh.inv_date<=sysdate -6)
when to_char(sysdate,'day') ='星期四' then (dh.inv_date >= sysdate -10 and dh.inv_date<=sysdate -6)
when to_char(sysdate,'day') ='星期五' then (dh.inv_date >= sysdate -11 and dh.inv_date<=sysdate -6)
when to_char(sysdate,'day') ='星期六' then (dh.inv_date >= sysdate -12 and dh.inv_date<=sysdate -6)
when to_char(sysdate,'day') ='星期日' then (dh.inv_date >= sysdate -13 and dh.inv_date<=sysdate -6)
end case
GROUP BY DD.COM_ID,DD.SHOP_CODE,DD.ITEM_CODE) s
left join lot l on l.com_id=s.com_id and l.ware_code=s.shop_code and l.item_code=s.item_code
left join lot_log ll on l.com_id=ll.com_id and l.ware_code=ll.ware_code and l.item_code=ll.com_code这样有可能实现吗?