列を持つ既存のテーブルがあります。
ItemCode nvarchar
Supplier1Price nvarchar
Supplier2Price nvarchar
Supplier3Price nvarchar
SelectedSupplier int (1, 2 or 3)
このテーブルは、さまざまなサプライヤーからの問い合わせに使用されます。私がやりたいことは、選択したサプライヤーから同じアイテムの合計を取得することです。
例:
ItemCode Supplier1Price Supplier2Price Supplier3Price SelectedSupplier
item-00 100 200 300 1
item-00 200 100 300 2
item-00 200 100 300 2
item-01 200 300 100 3
item-01 200 100 300 2
結果は次のようになります。
ItemCode Total
item-00 300
item-01 200
私がしたことはこれです:
select
ItemCode,
sum(SupplierPrice) as Total
from
(select
ItemCode,
case SelectedSupplier
when 1 then Supplier1Price
when 2 then Supplier2Price
when 3 then Supplier3Price
end) as SupplierPrice
from CanvassTable)
group by ItemCode
注: 最初に、上記のコードはすべてのアイテムコードと対応する価格を (選択したサプライヤーから) 選択します。結果は、各アイテムの価格の合計を取得するために処理されます。
それはすでに機能しています。問題は、サブクエリを使用したことです。テーブル データが大きくなると、クエリのパフォーマンスが低下するのではないかと心配しています。私の質問は、サブクエリなしでこれを行う方法はありますか?