Sql 订单中第一个产品的交货费您想显示最高“产品价值”的“交货费”吗?您能添加代码吗?如何知道要退回或不退回哪个交货费?老实说,产品价值在OrderID之后按降序排列完全是巧合。每份订单的标准送货费为3.50英镑。因此,当我运行报告时,我只想显示orderHel

Sql 订单中第一个产品的交货费您想显示最高“产品价值”的“交货费”吗?您能添加代码吗?如何知道要退回或不退回哪个交货费?老实说,产品价值在OrderID之后按降序排列完全是巧合。每份订单的标准送货费为3.50英镑。因此,当我运行报告时,我只想显示orderHel,sql,Sql,订单中第一个产品的交货费您想显示最高“产品价值”的“交货费”吗?您能添加代码吗?如何知道要退回或不退回哪个交货费?老实说,产品价值在OrderID之后按降序排列完全是巧合。每份订单的标准送货费为3.50英镑。因此,当我运行报告时,我只想显示orderHello中第一个产品的交付费用,谢谢您的回复。不幸的是,这对我来说是行不通的,因为有多个产品具有相同的单位成本。在实现此排名功能后,尽管在某些情况下可以正常工作,但仍有许多订单将交货费用分配给多个产品。还有别的办法吗?@MattJA你已经接受了一个


订单中第一个产品的交货费您想显示最高“产品价值”的“交货费”吗?您能添加代码吗?如何知道要退回或不退回哪个交货费?老实说,产品价值在OrderID之后按降序排列完全是巧合。每份订单的标准送货费为3.50英镑。因此,当我运行报告时,我只想显示orderHello中第一个产品的交付费用,谢谢您的回复。不幸的是,这对我来说是行不通的,因为有多个产品具有相同的单位成本。在实现此排名功能后,尽管在某些情况下可以正常工作,但仍有许多订单将交货费用分配给多个产品。还有别的办法吗?@MattJA你已经接受了一个合适的解决方案。要点与我的建议相同,它只是计算每个分区中的记录,而不是根据
productValue
计算排名。您好,感谢您的回复。不幸的是,这对我来说是行不通的,因为有多个产品具有相同的单位成本。在实现此排名功能后,尽管在某些情况下可以正常工作,但仍有许多订单将交货费用分配给多个产品。还有别的办法吗?@MattJA你已经接受了一个合适的解决方案。要点与我的建议相同,它只是计算每个分区中的记录,而不是根据
productValue
计算排名。这确实解决了我的问题,非常感谢!你能解释一下它到底是怎么做的吗?谢谢这确实解决了我的问题,非常感谢!你能解释一下它到底是怎么做的吗?谢谢
SELECT dbo.Orders.EncryptedOrderId,
       dbo.OrderProduct.ProductID,
       dbo.OrderProduct.QuantityPerRecipient,
       dbo.OrderProduct.NumRecipients,
       dbo.OrderProduct.TotalQuantity,
       dbo.DocType.Name AS [Product Type],
       dbo.ProductGroup_Culture.Name AS [Product Group],
       RIGHT(CatalogNo, CHARINDEX('_', REVERSE('_' + CatalogNo)) -1) AS [HamptonsType],
       FORMAT(dbo.Orders.DateOrderCreated, 'dd/MM/yyyy HH:mm:ss') AS 'DateOrderCreated',
       CAST(REPLACE(dbo.Orders.ClearingResult, 'utf-8', 'utf-16') AS XML ).value('(/UserData//CostCenter/node())[1]', 'nvarchar(max)') AS [Cost Center], 
       dbo.Users.FirstName, 
       dbo.Users.LastName, 
       dbo.Users.CompanyName AS [Branch Name], 
       dbo.Users.Department AS Subsidiary, 
       dbo.Users.Custom1, 
       dbo.Users.Custom2, 
       dbo.Users.Custom3, 
       dbo.Users.Custom4, 
       dbo.Users.Custom5, 
       dbo.OrderProduct.TotalPrice,
       dbo.Orders.ShippingCharges,
       dbo.OrderProduct.OrderProductID, 
       dbo.FileSubmissionDocument.OriginalFileType, 
       COALESCE (dbo.FileSubmissionDocument.Title, dbo.Product_Culture.Name) AS [Product Name],
       OPDV.FriendlyValue AS 'BCard Recipient'
FROM dbo.DocType
INNER JOIN dbo.Doc
    ON dbo.DocType.DocTypeID = dbo.Doc.DocTypeID
INNER JOIN dbo.OrderProduct
    ON dbo.Doc.ProductID = dbo.OrderProduct.ProductID
LEFT JOIN dbo.Product
    ON dbo.Product.ProductID = dbo.Doc.ProductID
LEFT JOIN dbo.ProductGroupMembership
    ON dbo.ProductGroupMembership.ProductID = dbo.Doc.ProductID
LEFT JOIN dbo.ProductGroup_Culture
    ON dbo.ProductGroup_Culture.ProductGroupID = dbo.ProductGroupMembership.ProductGroupID
INNER JOIN dbo.Orders
    ON dbo.OrderProduct.OrderID = dbo.Orders.OrderID
INNER JOIN dbo.Users
    ON dbo.Orders.UserID = dbo.Users.UserID
INNER JOIN dbo.Product_Culture
    ON dbo.OrderProduct.ProductID = dbo.Product_Culture.ProductID 
INNER JOIN dbo.Store_Culture
    ON dbo.Store_Culture.StoreID = dbo.Users.AssignedToStoreID FULL OUTER
JOIN dbo.FileSubmissionDocument
    ON dbo.OrderProduct.OrderProductID = dbo.FileSubmissionDocument.SubOrderProductID - 1
LEFT JOIN (SELECT OP.OrderProductID,
                  OP.DialID,
                  OP.FriendlyValue
           FROM OrderProductDialValue OP
           LEFT JOIN Dial DI ON DI.DialID = OP.DialID
           LEFT JOIN OrderProduct OT ON OT.OrderProductID = OP.OrderProductID
           LEFT JOIN Product PR ON PR.ProductID = OT.ProductID
           WHERE PR.ExternalID = 'BCName'
           AND DI.UProduceDialName = 'Name') OPDV ON OPDV.OrderProductID = dbo.OrderProduct.OrderProductID
WHERE ('@CUSTOMERNAME' is null
        OR '@CUSTOMERNAME' = ''
        OR dbo.Store_Culture.Name LIKE '%' + '@CUSTOMERNAME' + '%')
        AND dbo.OrderProduct.IsDraft = 0
        AND dbo.Orders.IsCart=0
        AND dbo.Orders.IsSaveForLater=0
        AND (('@DATE' <= dbo.Orders.DateOrderCreated)
        OR ('@DATE' IS NULL)
        OR ('@DATE'=''))
        AND ((DATEADD(day, 1, '@DATE') >= dbo.Orders.DateOrderCreated)
        OR ('@DATE' IS NULL)
        OR ('@DATE'=''))
AND dbo.Users.LastName NOT LIKE '%TEST%'
ORDER BY  dbo.Orders.OrderID DESC, dbo.OrderProduct.OrderProductID DESC
    select orderID
         , productID
         , productValue
         , DeliveryCharge
      from test_t
  order by orderID
         , productValue desc
         ;
    select orderID
         , productID
         , productValue
         , DeliveryCharge
         , CASE RANK() OVER ( PARTITION BY orderID ORDER BY productValue DESC ) WHEN 1 THEN DeliveryCharge ELSE NULL END r
      from test_t
  order by orderID
         , productValue desc
         ;
    select t.orderID
         , t.productID
         , t.productValue
         , rt.mdc DeliveryCharge
      from test_t t
 left join (
                select orderID
                     , max(productValue)    mp
                     , max(DeliveryCharge)  mdc
                  from test_t
              group by orderID
           ) rt
        on (
                 rt.orderID = t.orderID 
             AND rt.mp      = t.productValue 
           )
  order by orderID
         , productValue desc
         ;
select orderid,
    productid,
    productvalue,
    case ROW_NUMBER() over (partition by orderid order by orderid)
    when 1 then deliverycharge
    else null end as 'deliverycharge'
     from ........