2017-04-10 10 views
0

複数の行から行を更新することはできますか?文字列を連結して複数の行から更新する

見つかった文字列を連結して列を更新しようとしていますが、機能しません。私は列のすべてのsord.typeを連結しようとしている

sor.typeどこsord.orderid = sor.orderid

クエリ:

update sor 
set sor.type = sor.type + " " + (select sord.type 
           from sales.OrderDetails sord 
           where sord.orderid = sor.orderid) 
from sales.Orders sor 

は私が合計

エラーを取得したいです

メッセージ512、レベル16、状態1、行1
サブクエリが1より大きい値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。 sor.type + ' ' +が必要な場合は、サンプルデータなし

+1

は、そのテーブルを代わりに参加する参加することができサブクラスを作成するとき – scsimon

+0

エラーは、サブクエリが複数の値を返したことを示しています。サブクエリを単独で実行して出力を確認したことがありますか? – dfundako

+0

サンプルデータと望ましい結果がより役に立ちます。明らかに複数のレコードがありますが、複数のsord.typeがありますか? –

答えて

1

が、私はわからないんだけど

更新せずに、次の試してみてください。あなたは結果witht満足している場合は、選択しトップを削除し、サンプルデータを見ることなく、再び更新

Select 
--update sor set sor.type = 
    sor.type + ' ' + (Select Stuff((Select Distinct ' ' +sord.type 
               From sales.OrderDetails sord 
               Where sord.orderid = sor.orderid 
               For XML Path ('')),1,1,'')) 
from sales.Orders sor 

をアンコメントし、そこつまり、明確なよりパフォーマンスのアプローチを可能と

+0

はい、私が望んでいたものです。ありがとうございます –

+0

@サリ幸せに助けてください:) –

関連する問題