0
1つのクエリでヘルプが必要です。そのテーブル内のSQL Server複数の列を1行で大文字にする
create table PriceComponents
(id int,
summ money,
svkey1 int,
comission1 float,
svkey2 int,
comission2 float,
to_key int
);
create table Comissions
(
id int,
commission float,
svkey int,
to_key int
);
create table Goods
(
to_key int
);
と単純なデータ:
insert into Goods values (1), (2), (3);
insert into Comissions values (1, 15, 1, 2), (2, 10, 2, 2), (3, 5, 1, 3);
insert into PriceComponents values (1, 100, 1, 0, 2, 0, 2), (2, 200, 1, 0, 2, 0, 3);
そして、私がしたい私は、私は3つのテーブルを(彼らは例えば、よりシンプルです)持っているSQL Server 2008の
を使用しますそのクエリで:PriceComponents
(comission1
とcomission2
列):更新
update dbo.PriceComponents
set comission1 = case when Comissions.svkey=svkey1 then dbo.Comissions.commission else comission1 end,
comission2 = case when Comissions.svkey=svkey2 then dbo.Comissions.commission else comission2 end
from dbo.PriceComponents
left outer join dbo.Goods on dbo.PriceComponents.to_key = dbo.Goods.to_key
left outer join dbo.Comissions on dbo.Goods.to_key = dbo.Comissions.to_key;
だからクエリPriceComponents
前のように見えました:
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 0 2 0 2
2 200,00 1 0 2 0 3
以降:
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 15 2 0 2
2 200,00 1 5 2 0 3
が、私はこの結果を期待する:私はどこ
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 15 2 10 2
2 200,00 1 5 2 0 3
私は本当に理解していないがエラー。
ありがとうございます。しかし、私が同じ条件でselectクエリを実行すると、dbo.PriceComponentsからdbo.PriceComponentsを外に出てdbo.Goods.to_key = dboにdbo.PriceComponents.to_key = dbo.Goods.to_keyを外側に残してdbo.Commentsを残します。 Comissions.to_key;私は3つの行を持っています。私は間違っているかもしれませんが、私は更新がこの行を使用し、PriceComponentsの1つの行に対して2つの更新があることを願っています。それがそうであれば。タスクを完了するにはどうすればよいですか?PriceComponentsのすべての行のすべてのコミッションを更新しますか? –
要件に一致する行は1つだけです。この要件を満たすには、おそらく2回データを渡す必要があります – JNK