SQL Server 2005には、Rep_table、Selling、Upgrade、Deliveryなどのテーブルがあります。
販売、アップグレード、配信の列の合計を取得しようとしています。Rep_Tableには、Rep_TableID、CommID、およびMerchantIDの列があります。販売にはSellingID、Rep_TableID、AmountSold、S_AmountCollected、アップグレードには列UpgradeID、Rep_TableID、AmountUpgraded、U_AmountCollected配信には列DeliveryID、Rep_TableID、D_AmountCollectedがあります
Rep_Tableには、販売、アップグレード、配信用にそれぞれ1つずつ、合計3つのレコードがあります。私の目標は、販売済みとアップグレード済みの合計、3つのテーブルから収集されたすべての合計、および残高を取得することです。
以下のクエリを試してみると、結合がうまく機能していることがわかりません。このクエリでは、各マーチャントについて、1行で販売、1行でアップグレード情報、もう1行で配達が表示されます。私が探しているのは、すべての計算を実行し、各マーチャントに対して1行にする必要があるということです。私が求めていることを明確にしたいと思います。よろしくお願いします!
Select *, isnull(cast(S.AmountSold as numeric(10,2)), 0) + isnull(cast(U.AmountUpgraded as numeric(10,2)), 0) as AmountSold,
isnull(cast(S.S_AmountCollected as numeric(10,2)), 0) + isnull(cast(U.U_AmountCollected as numeric(10,2)), 0) + isnull(cast(D.D_AmountCollected as numeric(10,2)), 0) as AmountCollected,
(isnull(cast(S.AmountSold as numeric(10,2)), 0) + isnull(cast(U.AmountUpgraded as numeric(10,2)), 0)) -
(isnull(cast(S.S_AmountCollected as numeric(10,2)), 0) + isnull(cast(U.U_AmountCollected as numeric(10,2)), 0) + + isnull(cast(D.D_AmountCollected as numeric(10,2)), 0) ) as Balance
from Rep_Table RD
inner join Merchant M on M.MerchantID = RD.MerchantID --for MerchantInfo
left outer join SellingInfo S on S.RepInfoID = RD.RepInfoID
left outer join UpgradingInfo U on U.RepInfoID = RD.RepInfoID
left outer join DeliveryInfo D on D.RepInfoID = RD.RepInfoID
where RD.CommuniTeeID = @CommuniTeeID