Methodというフィールドを持つ一時テーブルがあるので、次のようになります。
DECLARE @CaseSites TABLE (
BriefID int,
Method varchar(60)
-- other fields
)
メソッドは、別のテーブル(CaseEventTypeList)の複数の行から入力されます。
ランニング
SELECT * FROM CaseEventTypeList WHERE RefID = 1
与える
RefID TypeID
1 2
1 3
1 6
これを単一のコンマ区切りの結果に変換するのは非常に簡単です。
DECLARE @CETList varchar(30)
SELECT @CETList = COALESCE(@CETList + ',', '') + CAST(CETL.[TypeID] AS varchar)
FROM CaseEventTypeList CETL
WHERE CETL.RefID = 1
PRINT @CETList
与える:
2,3,6
次に、これを拡張してテーブル全体を取り込む必要があります。これは私が思いついたものです:
UPDATE @CaseSites SET Method = COALESCE(Method + ',','') + CAST(CETL.TypeID AS VARCHAR)
FROM CaseEvents CE
JOIN CaseEventTypeList AS CETL ON CETL.RefID = CE.TypeListID
WHERE BriefID = CE.CaseID
ただし、これは、値の各セットの最初の値でメソッドを埋めるだけです。
私はオンラインでこれを見つけましたが、udfを使用したくありません-特にソリューションが非常に近いと感じた場合。
更新: データはかなり単純です。RefIdはケースごとにインクリメントされます。TypeIDは任意の数にすることができますが、現在モデル化されているのは1〜8個だけです。したがって、あなたは持っているかもしれません:
RefID TypeID
12 2
12 7
13 1
14 1
14 3
14 6
そして、これはうまくいけば次のようにモデル化されます
SELECT Method from @CaseSites
Method
...
12 2,7
13 1
14 1,3,6
...