Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật truy vấn với truy vấn con có liên quan

Mặc dù tôi nghĩ rằng JOIN tiêu chí rất khó xảy ra, có vẻ như bạn đang cố gắng thực hiện điều này?

CHỈNH SỬA:Tôi đã sửa đổi JOIN nhưng đây là những gì bạn đang theo đuổi. Grouping By các cột OR 'd là kỳ quặc.

;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

Đây là truy vấn của bạn trông như thế nào với 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 

CHỈNH SỬA:Mặc dù tôi đang gặp khó khăn trong việc tìm ra lỗi với cú pháp đã đăng của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các tính năng ẩn của SQL Server

  2. Trả về thông số đầu ra của một thủ tục đã lưu trữ bên trong một thủ tục đã lưu trữ khác

  3. Cập nhật câu lệnh chạy quá lâu hoặc không

  4. Tạo Ngày giữa các phạm vi ngày

  5. Thực thi một tập lệnh SQL lớn (với các lệnh GO)