添加列“上一个日期”

时间:2013-04-11 08:33:14

标签: sql

我有这样的表:

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 

1 个答案:

答案 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

您也不需要将其作为表格中的列。请记住,数据库设计的基本规则是 - 永远不要存储您可以计算的内容*。

*除非您的数据库永远或几乎从不改变,否则您需要它真的非常快。这称为“数据仓库”。