Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zaktualizuj zapytanie o skorelowane podzapytanie

Chociaż myślę, że JOIN kryteria są bardzo mało prawdopodobne, wygląda na to, że próbujesz to zrobić?

EDYCJA:Zmodyfikowałem JOIN kryteria, ale to jest to, czego szukasz.Grouping By kolumny, które są OR „d” jest dziwne.

;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

Tak wyglądałoby Twoje zapytanie z 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 

EDYCJA:Chociaż trudno mi znaleźć błąd w opublikowanej składni.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dlaczego nie mogę uzyskać dostępu do mojego CTE po użyciu go raz?

  2. Jak zatwierdzić i wycofać transakcję na serwerze sql?

  3. Utwórz jeden wyzwalacz dla wielu operacji

  4. Usuń konto pocztowe bazy danych w programie SQL Server (T-SQL)

  5. Jak przywrócić bazę danych SQL Server na komputerze Mac za pomocą programu SQL Operations Studio