1

いくつかの用語を含む表があります。これらの用語は複数の言語で使用されています。例えば:

SELECT *
FROM Terminology

結果は

ID   language          text        create_date
1       DE          TextDE  2011-03-03 14:31:28.423
1       EN          TextEN  2011-04-03 14:32:27.423
1       ES          TextES  2011-05-03 14:33:26.423
1       FR          TextFR  2011-06-03 14:34:25.423
1       NL          TextNL  2011-07-03 14:35:24.423
1       PT          TextPT  2011-08-03 14:36:23.423
2       DE                 ...
...

しかし、次の形式のデータが必要です。

ID  DE     EN     ES     FR     NL     PT
1 TextDE TextEN TextES TextFR TEXTNL TextPT
2 ...

IDlanguage主キーを構築しています。言語の数は可変であるため、6 つの列だけを追加することはできません。

プレーンな SQL-Query でこれを行うことは何とか可能ですか、それとも私のプログラムでこれをソートする必要がありますか?

編集:
テーブル内の列が選択されていないが、値が異なる場合、いくつかの行が表示されます。
6 つの異なる日付の例のように、6 つの異なる行を取得します。

ID          DE         EN         ES         FR         NL         PT

1   TextDE            NULL       NULL       NULL       NULL       NULL
1   NULL              TextEN     NULL       NULL       NULL       NULL
1   NULL              NULL       TextES     NULL       NULL       NULL
1   NULL    NULL    NULL    TextFr NULL NULL    NULL
...

これをどうにかして1行にすることはできますか?

4

2 に答える 2

1

SQL Server でこれを行う簡単な方法はありません。一般的な解決策については、この回答を参照してください - https://stackoverflow.com/a/13583258/1744834

少数の列の場合、次のことができます。

select
    ID,
    max(case when language = 'DE' then text else null end) as TextDE,
    max(case when language = 'EN' then text else null end) as TextEN,
    ...
from Terminology
group by ID
于 2013-08-14T07:27:02.953 に答える