2016-04-05 10 views
0

に対するCSV値Iは私がこのSQL Serverの - CSVのID

のようなCSV値として Table AIdを渡していたに IDName

id name 
1 Turret Punch Press 
2 Laser Machine 
3 Press Brake 
4 Other machines 

Table Bを持ってTableAする2つのテーブルを持っています

id TableACSV 
1 1,2 
2 1,3 

私のお問い合わせは

Select 
    id, TableACSV 
from tableB 
where (--here i am having problem with query--) 
のようになります

は私が..私はこれを行うには悪い習慣かもしれません知っているこの

id TableACSV 
1 Turret Punch Press,Laser Machine 
2 Turret Punch Press,Press Brake 

ようにする必要がありますしたいが、出力は現在、私はこれを必要とする。..

+0

あなたは 'MySQL'のクエリも必要ですか? – Squirrel

+0

@Squirrelだけsql-server ...私はmysqlタグを削除すると思います – KanisXXX

+0

Google: 'SQL Server group_concat' – sagi

答えて

0

CSVスプリッタDelimitedSplit8K

; WITH CTE AS 
(
    SELECT b.id, a.name 
    FROM TableB b 
    CROSS APPLY dbo.DelimitedSplit8K(b.TableACSV, ',') c 
    INNER JOIN TableA a on c.Item = a.id 
) 
SELECT DISTINCT c.id, STUFF(d.name, 1, 1, '') AS TableACSV 
FROM CTE c 
    CROSS APPLY 
    (
     SELECT ',' + x.name 
     FROM CTE x 
     WHERE x.id = c.id 
     FOR XML PATH ('') 
    ) d (name) 
を使用して
+0

この場合、文字列分割は、腹部刺しにBand-Aidを適用するようなものです。 OPはIDを分割し、ルックアップ・ソースに参加してからルックアップ値を再集計する必要があります。いずれにしても、Aaron Bertrand [文字列を分割するさまざまな方法のより完全な比較を行います(http://sqlperformance.com/2012/07/t-sql-queries/split-strings)。 CLRソリューションは、おそらく分割/結合/再配列シーケンスを避けて、ルックアップを直接行うことができます。 –

+0

与えられた例に取り組んでいます.... !!!私の実際のシナリオでテストする必要があります。たくさんのthanxx – KanisXXX

関連する問題