代码之家  ›  专栏  ›  技术社区  ›  radbyx Matt

如何结合其他条件查找每个产品的最新日期时间

sql
  •  1
  • radbyx Matt  · 技术社区  · 14 年前
    Product:
    ProductID
    ProductName
    
    StateLog:
    StateLogID
    ProductID (Foreign Key)
    State (bit)
    TimeStamp (DateTime)
    

    我需要为每个statelog.productid找到最高的statelog.timestamp,其中有statelog.state=0

    2 回复  |  直到 9 年前
        1
  •  3
  •   kristianp    9 年前

    尝试:

    SELECT
        p.ProductID, p.ProductName, dt.MaxTimeStamp
        FROM Product p
            LEFT OUTER JOIN (SELECT
                                ProductID, MAX(TimeStamp) AS MaxTimeStamp
                                FROM StateLog
                                WHERE State = 0
                                GROUP BY ProductID
                            ) dt ON p.ProductID =dt.ProductID 
        ORDER BY p.ProductName
    

    或者只是:

    SELECT
       ProductID, MAX(TimeStamp) AS MaxTimeStamp
       FROM StateLog
       WHERE State = 0
       GROUP BY ProductID
    
        2
  •  1
  •   Joel Coehoorn    14 年前
    WITH ProductTimeStamps AS
    (
       SELECT ProductID, Max(TimeStamp) FROM SateLog WHERE State=0 GROUP BY ProductID
    )
    SELECT sl.StateLogID, sl.ProductID, sl.TimeStamp
    FROM StateLog sl
    INNER JOIN ProductTimeStamps pts ON pts.ProductID = sl.ProductID AND pts.TimeStamp = sl.TimeStamp
    WHERE sl.State = 0