1

我有这样的表:

PartNr、ProductionSite、ProductionType、PODate、PoPrice、PoCurrency

前三列定义了独特的产品。我想做的是再添加一列与以前的采购订单日期,以使价格有效的日期范围。这是示例:

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 
4

1 回答 1

1

您需要一个子查询来选择低于当前行日期的最大日期(并匹配 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

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

*除非您的数据库从不或几乎从不更改,并且您需要它非常非常快。这被称为“数据仓库”。

于 2013-04-11T08:43:34.203 回答