原贴子
http://topic.csdn.net/u/20110328/14/36fb8b3a-e48d-4bb2-8254-abeb54dc7a34.html有下面六点问题
1.只要工厂等于BJ2006,2007的数据,库地把等于844的删除
2.用今天的日期减去入库时间得出(在库天数)
3.根据在库天数得出""库存天数"",小于30天以下的不要,只要30天以上的
4.SKU包含"65"开头的为"产品属性"为主机,SKU包含64开头的为"产品属性"为显示器,SKU不包含64与65的"产品属性"为其它
5.平台全部为HY
6."工厂"等于BJ2006的事业部全部为PCC,"名称"包含CC的事业部为DCC,不符合这两个条件的事业部全部为OBB1.只要工厂等于BJ2006,2007的数据,库地把等于844的删除库地等于844没有删除
上次问题得出的结果如下现在的问题是把相同工厂,库地,sku,批次,入库时间合并成一条记录,数量进行汇总 向三姐请教
http://topic.csdn.net/u/20110328/14/36fb8b3a-e48d-4bb2-8254-abeb54dc7a34.html有下面六点问题
1.只要工厂等于BJ2006,2007的数据,库地把等于844的删除
2.用今天的日期减去入库时间得出(在库天数)
3.根据在库天数得出""库存天数"",小于30天以下的不要,只要30天以上的
4.SKU包含"65"开头的为"产品属性"为主机,SKU包含64开头的为"产品属性"为显示器,SKU不包含64与65的"产品属性"为其它
5.平台全部为HY
6."工厂"等于BJ2006的事业部全部为PCC,"名称"包含CC的事业部为DCC,不符合这两个条件的事业部全部为OBB1.只要工厂等于BJ2006,2007的数据,库地把等于844的删除库地等于844没有删除
上次问题得出的结果如下现在的问题是把相同工厂,库地,sku,批次,入库时间合并成一条记录,数量进行汇总 向三姐请教
HY PCC BJ2006 399 651846 p102329 eeeee 主机 00:00.0 80 50 30~60
HY DCC BJ2007 411 646813 p102323 cccc 显示器 00:00.0 50 78 90以上
create table tb
(
工厂 varchar(10),
库地 int,
类型 varchar(10),
属性 varchar(10),
SKU varchar(10),
批次 varchar(10),
名称 varchar(10),
入库时间 datetime,
数量 int,
重量 int,
备注 varchar(10)
)
insert into tb
select 'BJ2006',399,'DK','RTE','651846','p102329','eeeee','2011-2-7',50,700,'' union all
select 'BJ2006',399,'DK','RTE','651846','p102329','eeeee','2011-2-7',30,600,'' union all
select 'BJ2007',411,'DK','RTE','646813','p102323','cccc','2011-1-10',50,500,'' union all
select 'BJ2114',422,'EO','CRE','218441','p102331','eeeee','2010-4-8',15,999,'' union all
select 'BJ2119',401,'RO','DFE','218981','p102329','eeeeeeee','2011-3-8',100,213,'' union all
select 'BJ2119',844,'RO','DFE','218981','p102329','eeeeeeee','2011-3-8',100,213,''
go--1 工厂为BJ2006,2007的数据,库地把等于844的删除delete from tb
where 工厂 in ('BJ2006','BJ2007') and 库地 = 844select [平台],工厂,库地,SKU,批次,名称,入库时间,sum(数量)数量,[入库天数],[库存天数]
from(
select N'HY' as [平台],
(case when 工厂 = 'BJ2006' then 'PCC' when 工厂 <> 'BJ2006' and charindex('cc',名称) > 0 then 'DCC' else 'OBB' end) as[事业部],
工厂,库地,SKU,批次,名称,
(case when left(SKU,2) = '65' then N'主机' when left(SKU,2) = '64' then N'显示器' else N'其它' end) as [产品属性],
入库时间,数量,
datediff(dd,入库时间,getdate()) as [入库天数],
(case when datediff(dd,入库时间,getdate()) between 30 and 60 then '30~60'
when datediff(dd,入库时间,getdate()) between 30 and 60 then '60~90'
else '90以上' end) as [库存天数]
from tb
where 工厂 in ('BJ2006','BJ2007') and datediff(dd,入库时间,getdate()) >= 30
)t
group by [平台],工厂,库地,SKU,批次,名称,入库时间,[入库天数],[库存天数]drop table tb/*平台 工厂 库地 SKU 批次 名称 入库时间 数量 入库天数 库存天数
---- ---------- ----------- ---------- ---------- ---------- ----------------------- ----------- ----------- ------
HY BJ2006 399 651846 p102329 eeeee 2011-02-07 00:00:00.000 80 50 30~60
HY BJ2007 411 646813 p102323 cccc 2011-01-10 00:00:00.000 50 78 90以上(2 行受影响)
create table tb
(
工厂 varchar(10),
库地 int,
类型 varchar(10),
属性 varchar(10),
SKU varchar(10),
批次 varchar(10),
名称 varchar(10),
入库时间 datetime,
数量 int,
重量 int,
备注 varchar(10)
)
insert into tb
select 'BJ2006',399,'DK','RTE','651846','p102329','eeeee','2011-2-7',50,700,'' union all
select 'BJ2006',399,'DK','RTE','651846','p102329','eeeee','2011-2-7',30,600,'' union all
select 'BJ2007',411,'DK','RTE','646813','p102323','cccc','2011-1-10',50,500,'' union all
select 'BJ2114',422,'EO','CRE','218441','p102331','eeeee','2010-4-8',15,999,'' union all
select 'BJ2119',401,'RO','DFE','218981','p102329','eeeeeeee','2011-3-8',100,213,'' union all
select 'BJ2119',844,'RO','DFE','218981','p102329','eeeeeeee','2011-3-8',100,213,''
go
--把工厂等于BJ2004 的改为BJ2007,然后在计算
--原表数据为BJ2004的不做修改可以如下,可以修改表可以update后按楼上的继续!
/*
update tb
set 工厂 = 'BJ2007'
where 工厂 = 'BJ2004'
*/
--1 工厂为BJ2006,2007的数据,库地把等于844的删除delete from tb
where 工厂 in ('BJ2006','BJ2007','BJ2004') and 库地 = 844select [平台],工厂,库地,SKU,批次,名称,入库时间,sum(数量)数量,[入库天数],[库存天数]
from(
select N'HY' as [平台],
(case when 工厂 = 'BJ2006' then 'PCC' when 工厂 <> 'BJ2006' and charindex('cc',名称) > 0 then 'DCC' else 'OBB' end) as[事业部],
工厂,库地,SKU,批次,名称,
(case when left(SKU,2) = '65' then N'主机' when left(SKU,2) = '64' then N'显示器' else N'其它' end) as [产品属性],
入库时间,数量,
datediff(dd,入库时间,getdate()) as [入库天数],
(case when datediff(dd,入库时间,getdate()) between 30 and 60 then '30~60'
when datediff(dd,入库时间,getdate()) between 30 and 60 then '60~90'
else '90以上' end) as [库存天数]
from tb
where 工厂 in ('BJ2006','BJ2007','BJ2004') and datediff(dd,入库时间,getdate()) >= 30
)t
group by [平台],工厂,库地,SKU,批次,名称,入库时间,[入库天数],[库存天数]drop table tb/*
平台 工厂 库地 SKU 批次 名称 入库时间 数量 入库天数 库存天数
---- ---------- ----------- ---------- ---------- ---------- ----------------------- ----------- ----------- ------
HY BJ2006 399 651846 p102329 eeeee 2011-02-07 00:00:00.000 80 50 30~60
HY BJ2007 411 646813 p102323 cccc 2011-01-10 00:00:00.000 50 78 90以上(2 行受影响)
你这个数据,还有一个问题吧,上一个贴子17楼,附加了一个问题
上个贴子 17楼的问题
不好意思结果给错了我忘了一个条件,还请帮忙写一下
把工厂等于BJ2004 的改为BJ2007,然后在计算
这个问题解决了,马上结贴
.
-- 按天算,改下入库时间就可以了。
select [平台],工厂,库地,SKU,批次,名称,入库时间,sum(数量)数量,convert(varchar(10),[入库天数],120) [入库天数],[库存天数]
from(
select N'HY' as [平台],
(case when 工厂 = 'BJ2006' then 'PCC' when 工厂 <> 'BJ2006' and charindex('cc',名称) > 0 then 'DCC' else 'OBB' end) as[事业部],
工厂,库地,SKU,批次,名称,
(case when left(SKU,2) = '65' then N'主机' when left(SKU,2) = '64' then N'显示器' else N'其它' end) as [产品属性],
入库时间,数量,
datediff(dd,入库时间,getdate()) as [入库天数],
(case when datediff(dd,入库时间,getdate()) between 30 and 60 then '30~60'
when datediff(dd,入库时间,getdate()) between 30 and 60 then '60~90'
else '90以上' end) as [库存天数]
from tb
where 工厂 in ('BJ2006','BJ2007','BJ2004') and datediff(dd,入库时间,getdate()) >= 30
)t
group by [平台],工厂,库地,SKU,批次,名称,入库时间,convert(varchar(10),[入库天数],120),[库存天数]