sql >> Databáze >  >> RDS >> Sqlserver

Aktualizujte dotaz pomocí korelovaného poddotazu

I když si myslím, že JOIN kritéria jsou vysoce nepravděpodobná, zdá se, že se o to pokoušíte?

EDIT:Upravil jsem JOIN kritéria, ale o to vám jde.Grouping By sloupce, které jsou OR 'd je liché.

;WITH MinOrderDates AS
(
    SELECT   CustID 
            ,OrderDate  = MIN(OrderDate)
    FROM Orders
    GROUP BY CustID
)

UPDATE C
SET FirstOrderDate = MIN(O.OrderDate)
FROM Customers      C
JOIN MinOrderDates  O   ON C.Id = O.CustID

Takto by vypadal váš dotaz s OR s

;WITH MinOrderDates AS
(
    SELECT   ShipperId
            ,PickupId
            ,ConsigneeId
            ,DeliveryId
            .BillingId
            ,OrderDate  = MIN(OrderDate)
    FROM Orders
    GROUP BY ShipperId
            ,PickupId
            ,ConsigneeId
            ,DeliveryId
            .BillingId
)

UPDATE C
SET FirstOrderDate = MIN(O.OrderDate)
FROM Customers      C
JOIN MinOrderDates  O   ON o.ShipperId     = C.Id or
                           o.PickupId      = C.Id or
                           o.ConsigneeId   = C.Id or
                           o.DeliveryId    = C.Id or
                           o.BillingId     = C.Id 

EDIT:I když mám problém najít chybu ve vaší odeslané syntaxi.



  1. Vkládání do MySQL z PHP (jQuery/AJAX)

  2. Chyba cizího klíče MySQL 1005 errno 150 primární klíč jako cizí klíč

  3. Pivot v Oracle 11g

  4. MySql Processlist plný záznamů spánku vedoucích k příliš mnoha připojením?