0

我有一张包含产品付款条款的表格。我想获得该产品的最新条款。在下面的查询中,它返回自我的应用程序投入生产以来的所有术语。我只需要该产品的最新术语。

SELECT
   dbo.FinishProduct.id,
   dbo.PaymentTerm.id,
   dbo.PaymentTerm.terms,
   dbo.PaymentTerm.type
FROM
   dbo.PaymentTerm
INNER JOIN
   dbo.FinishProduct ON (dbo.PaymentTerm.finishProductId = dbo.FinishProduct.id) 
WHERE
   finishproduct.id = 39

我的PaymentTerm表有 PKid并且它有创建和更新的日期,如下所示:

id BIGINT NOT NULL IDENTITY,
created DATETIME,
lastUpdated DATETIME,
4

1 回答 1

1

您可以将 orderby 子句放在查询中的 lastUpdated 字段上,并相应地获取前 10 条或更多最新记录,如下所示

SELECT TOP 10  FP.id, PT.id, PT.terms, PT.type
  FROM dbo.PaymentTerm PT
  INNER JOIN dbo.FinishProduct FP ON PT.finishProductId = FP.id 
  WHERE FP.id=39
  ORDER BY lastUpdated desc

或者,如果您需要将一天的所有记录返回到当前日期,请在这样的内置函数中使用 DateDiff

SELECT FP.id, PT.id, PT.terms, PT.type
  FROM dbo.PaymentTerm PT
  INNER JOIN dbo.FinishProduct FP ON PT.finishProductId = FP.id 
  WHERE FP.id=39 AND DateDiff(DAY,lastUpdated, GETDATE()) <= 1
于 2012-08-26T05:19:13.890 回答