我有这样的表:
PartNr,ProductionSite,ProductionType,PODate,PoPrice,PoCurrency
前三列定义了独特的产品。我想要做的是在之前的PO日期中再添加一列,以便制作价格有效的日期范围。这是一个例子:
PartNr.... Site.... Type.... Date
111111 BBBBB 100 2008-06-10
111111 BBBBB 100 2012-01-18
111111 BBBBB 100 2012-01-30
111111 AAAAA 100 2008-06-10
111111 AAAAA 100 2012-01-18
111111 AAAAA 100 2012-01-30
我想得到这个
PartNr.... Site .... Type .... Date .... Added Column
111111 BBBBB 100 2008-06-10 ... 0
111111 BBBBB 100 2012-01-18 ... 2008-06-10
111111 BBBBB 100 2012-01-30 ... 2012-01-18
111111 AAAAA 100 2008-06-10 ... 0
111111 AAAAA 100 2012-01-18 ... 2008-06-10
111111 AAAAA 100 2012-01-30 ... 2012-01-18
答案 0 :(得分:0)
您想要一个子查询,选择最接近当前行日期的日期(并匹配partnr等),如:
select PartNr, ProductionSite, ProductionType, PODate, PoPrice, PoCurrency,
(select max(PODate) from table t2 where t2.PODate < t1.PODate and t2.PartNr = t1.PartNr and t2.ProductionSite = t1.ProductionSite and t2.ProductionType = t1.productionType
as added_column from table t1
您也不需要将其作为表格中的列。请记住,数据库设计的基本规则是 - 永远不要存储您可以计算的内容*。
*除非您的数据库永远或几乎从不改变,否则您需要它真的非常快。这称为“数据仓库”。