2

「合体」を使用して1つのテーブルから複数の行の値を文字列連結し、コンマで区切って、サブクエリの列としてリストしようとしています。

の線に沿った何か

Declare @assignTo nvarchar(4000)

Select 
table1.columnA
table1.columnB
(
select @assignTo = Coalesce(@assignTo + ', ', '') + CAST(Name as nvarchar(250))
from
table2    
where
...
)
from table1
where

.....

「「=」付近の構文が正しくありません」というメッセージが表示され続けます。

Coalesce 関数が呼び出されるサブクエリを実行しようとすると、問題ありません。すなわち

 Declare @assignTo nvarchar(4000) 
 select @assignTo = Coalesce(@assignTo + ', ', '') + CAST(Name as nvarchar(250))
    from
    table2    
    where
    ...
  Select @assignTo

それはいいです。私の質問は、サブクエリとしてどのように含めるのですか?

どうもありがとう

ps: これは SQL Server 2000 に固有のものです。

4

2 に答える 2

4

サブクエリとして含めることはできません。UDF に移動する必要があります。

SQL Server 2005 では、XML PATH 手法を使用できます。ただし、SQL Server 2000 の場合、テーブル アクセスと連結を備えた別のスカラー UDF が必要です。

于 2011-04-12T05:02:23.400 に答える
0

私の知る限り、サブクエリとして行うことを好む場合は、このようにすることができます。しかし、上記の解決策が最も便利です。

Declare @assignTo nvarchar(4000)

Select 
table1.columnA
table1.columnB
tmp.[c]
from table1,
     (
      select @assignTo = Coalesce(@assignTo + ', ', '') + CAST(Name as nvarchar(250)) as [c]
      from
      table2    
      where
      ...
      ) as tmp
where

それがうまくいくことを願っています!

于 2011-04-13T00:34:21.537 に答える