私はERPシステムからMySQLデータベースへのマッピングに取り組まなければなりません。 ERPシステムに存在する構造は次のとおりです。PIVOTテーブルを使用した動的SQLの文字列連結
_____________________________________
| Article | Feature | Criterion |
|---------|---------------|-----------|
| Art1 | size | 4*10 |
| Art1 | color | red |
| Art1 | functionality | doesA |
| Art1 | ... | ... |
| Art2 | size | 2*5 |
| Art2 | color | green |
| Art2 | functionality | doesB |
| Art2 | ... | ... |
-------------------------------------
私がする必要がどのようなこのようにそれをマップである:
________________________________________________
| Article | size | color | functionality | ... |
|---------|------|-------|---------------|-------|
| Art1 | 4*10 | red | doesA | ... |
| Art2 | 2*5 | green | doesB | ... |
------------------------------------------------
私は経由でERPシステムにアクセスすることができますT-SQLを使用して、動的なクエリを実行することができます。テーブルは次のようになります。
DECLARE @cols AS nvarchar(MAX),
@query AS nvarchar(MAX)
SELECT @cols = stuff((SELECT DISTINCT ', ' + quotename(f.Feature) + ''
FROM CRITERION c, FEATURE f
WHERE --necessary joins
FOR xml PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @query = N'SELECT Article, ' + @cols + N'
FROM (
SELECT Article, Feature, Criterion
FROM --necessary tables
WHERE --necessary joins
) x
pivot
(
max(Criterion)
FOR Feature IN (' + @cols + N')
) p
'
EXEC sp_executesql @query;
今まで来ている問題は、システムが機能のいくつかのために複数の選択を備えていることを、次のとおりです。
_____________________________________
| Article | Feature | Criterion |
|---------|---------------|-----------|
| Art3 | color | red |
| Art3 | color | green |
-------------------------------------
とクエリは、ちょうど私のテーブルの最初の結果が得られます。
________________________________________
| Article | size | color | functionality |
|---------|------|-------|---------------|
| Art3 | ... | red | ... |
----------------------------------------
だから、「P」サブクエリ「X」またはピボットテーブル内のいずれかの文字列の連結を追加する方法があるかどうか私の質問は、ですので、結果は以下のようになります。
_____________________________________________
| Article | size | color | functionality |
|---------|------|------------|---------------|
| Art3 | ... | red, green | ... |
---------------------------------------------