1

试图从 ShipHead.Shipdate 而不是所有记录中获取最后/最新记录 我如何使用此查询进行最后记录?

SELECT
  OrderRel.ReqDate
 ,OrderHed.EntryPerson
 ,ShipHead.ShipDate
 ,Customer.Name
 ,ShipDtl.OrderNum
 ,ShipDtl.OrderLine
 ,ShipDtl.OrderRelNum
  FROM
   OrderHed
    INNER JOIN OrderDtl
    ON OrderHed.Company = OrderDtl.Company AND OrderHed.OrderNum = OrderDtl.OrderNum
    INNER JOIN OrderRel
    ON OrderDtl.Company = OrderRel.Company AND OrderDtl.OrderNum = OrderRel.OrderNum AND         OrderDtl.OrderLine = OrderRel.OrderLine
  INNER JOIN ShipDtl
ON OrderRel.Company = ShipDtl.Company AND OrderRel.OrderNum = ShipDtl.OrderNum AND     OrderRel.OrderLine = ShipDtl.OrderLine AND OrderRel.OrderRelNum = ShipDtl.OrderRelNum
  INNER JOIN ShipHead
   ON ShipDtl.Company = ShipHead.Company AND ShipDtl.PackNum = ShipHead.PackNum
   INNER JOIN Customer
   ON ShipHead.Company = Customer.Company AND ShipHead.CustNum = Customer.CustNum
  WHERE
OrderRel.OrderNum = 603205
4

1 回答 1

0

您可以尝试以下方法。如果您想要每个条目人员的最后日期记录,请更改为 B:

SELECT 
    X.ReqDate,
    X.EntryPerson,
    X.ShipDate,
    X.Name,
    X.OrderNum,
    X.OrderLine,
    X.OrderRelNum
FROM
  (
  SELECT
    ORl.ReqDate,
    OH.EntryPerson,
    SH.ShipDate,
    rn = row_number() OVER(ORDER BY SH.ShipDate DESC),
    --rn = row_number() OVER(PARTITION BY OH.EntryPerson ORDER BY SH.ShipDate DESC) --<<B
    C.Name,
    SD.OrderNum,
    SD.OrderLine,
    SD.OrderRelNum
  FROM
    OrderHed OH
    INNER JOIN OrderDtl OD ON 
        OH.Company = OD.Company AND 
        OH.OrderNum = OD.OrderNum
    INNER JOIN OrderRel ORl ON 
        OD.Company = ORl.Company AND 
        OD.OrderNum = ORl.OrderNum AND         
        OD.OrderLine = ORl.OrderLine
    INNER JOIN ShipDtl SD ON 
        ORl.Company = SD.Company AND 
        ORl.OrderNum = SD.OrderNum AND     
        ORl.OrderLine = SD.OrderLine AND 
        ORl.OrderRelNum = SD.OrderRelNum
    INNER JOIN ShipHead SH ON
        SD.Company = SH.Company AND 
        SD.PackNum = SH.PackNum
    INNER JOIN Customer C ON 
        SH.Company = C.Company AND 
        SH.CustNum = C.CustNum
    WHERE
      ORl.OrderNum = 603205
  ) X
WHERE X.rn = 1

PS为什么不使用较短的别名-这是别名的一部分

于 2014-02-06T21:39:53.030 回答