Foxpro アプリケーションを .NET に変換しようとしています。その変換の一環として、データを DBF テーブルから SQL サーバーに変換しています。
Orders テーブル、FirstOrder および LastOrder に基づいて、Customer テーブルにいくつかの新しいフィールドを作成する必要があります。
TSqlでこれを行う方法を混乱させることはできません。私は Foxpro でそれを行う方法を知っています。また、必要に応じて実際にそこで行うこともできますが、Sql でこれを行う方法を学ぶ必要があることはわかっています。
これが基本構造です。Customer テーブルには Id があり、更新が必要な FirstOrder フィールドと LastOrder フィールドがあります。Order Table には OrderDate がありますが、これが実際の曲線です。顧客 ID は、注文内の 5 つの異なるフィールド (ShipperId、PickupId、ConsigneeId、DeliveryId、または BillingId) に存在できます。
次のようなものです:
UPDATE customers
SET FirstOrderDate =
(Select MIN(OrderDate)
FROM Orders o
WHERE o.ShipperId = Customers.Id or
o.PickupId = Customers.Id or
o.ConsigneeId = Customers.Id or
o.DeliveryId = Customers.Id or
o.BillingId = Customers.Id)
サブクエリをメインの更新クエリと結び付ける方法を見つけることができないようです。
ありがとう - シド
編集: MarkD の提案に基づいて機能している SELECT は次のとおりです。
Select C.Id,Min(o.OrderDate) as firstorder, MAX(o.OrderDate) as lastorder
from Customers C
JOIN Orders 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
GROUP BY C.Id
では、これをサブクエリまたはカーソルとして使用して、Customers テーブルにポストバックしますか?