22,298
社区成员
发帖
与我相关
我的任务
分享DROP DATABASE TEST001
CREATE DATABASE TEST001
--创建数据库
USE
TEST001
--连接数据库
DROP TABLE 商品价目表
--删除表
CREATE TABLE 商品价目表
(商品名称 varchar(200),
商品价格 NUMERIC(10,2),
调价生效日 DATE,
调价失效日 DATE,
IT修正调价失效日期 DATE
)
--创建表
INSERT INTO 商品价目表(商品名称,商品价格,调价生效日,调价失效日) values
('iPhone SE2','3299','2020-5-1','2020-12-31'),
('iPhone SE2','3099','2020-6-1','2020-12-31'),
('华为P40 Pro','5988','2020-4-1','2020-12-31'),
('华为P40 Pro','5588','2020-5-1','2020-12-31'),
('华为P40 Pro','5288','2020-6-1','2020-12-31'),
('小米10 Pro','4999','2020-3-1','2020-12-31'),
('小米10 Pro','4999','2020-3-1','2020-12-31'),
('小米10 Pro','4599','2020-4-1','2020-12-31'),
('小米10 Pro','4399','2020-5-1','2020-12-31')
--插入数据
SELECT * FROM 商品价目表
--查询表

。with
t as
(select
seq=row_number()over(partition by 商品名称 order by 调价生效日 desc)
,t.商品名称
,t.商品价格
,t.调价生效日
,t.调价失效日
,t.IT修正调价失效日期
from 商品价目表 t
)
,cte as
(select t.*,cast(null as date)as IT修正调价失效日期2 from t where seq=1
union all
select t.*,dateadd(d,-1,cte.调价生效日)
from cte,t where t.商品名称 =cte.商品名称 and t.seq =cte.seq +1
)
update t set t.IT修正调价失效日期=cte.IT修正调价失效日期2
from 商品价目表 t,cte
where t.商品名称 =cte.商品名称 and t.调价生效日 =cte.调价生效日
go
select * from 商品价目表 order by 商品名称,调价生效日with
t as
(select
seq=row_number()over(partition by 商品名称 order by 调价生效日 desc)
,t.商品名称
,t.商品价格
,t.调价生效日
,t.调价失效日
from 商品价目表 t
)
,cte as
(select t.*,cast(null as date)as IT修正调价失效日期 from t where seq=1
union all
select t.seq,t.商品名称,t.商品价格,t.调价生效日,t.调价失效日,dateadd(d,-1,cte.调价生效日)
from cte,t where t.商品名称 =cte.商品名称 and t.seq =cte.seq +1
)
select 商品名称,商品价格,调价生效日,调价失效日,IT修正调价失效日期 from cte order by 商品名称,调价生效日
/*
商品名称 商品价格 调价生效日 调价失效日 IT修正调价失效日期
iPhone SE2 3299.00 2020-05-01 2020-12-31 2020-05-31
iPhone SE2 3099.00 2020-06-01 2020-12-31 NULL
华为P40 Pro 5988.00 2020-04-01 2020-12-31 2020-04-30
华为P40 Pro 5588.00 2020-05-01 2020-12-31 2020-05-31
华为P40 Pro 5288.00 2020-06-01 2020-12-31 NULL
小米10 Pro 4999.00 2020-03-01 2020-12-31 2020-03-31
小米10 Pro 4999.00 2020-03-01 2020-12-31 2020-02-29
小米10 Pro 4599.00 2020-04-01 2020-12-31 2020-04-30
小米10 Pro 4399.00 2020-05-01 2020-12-31 NULL
*/