これは基本的にデータベース結合に関する質問ですが、列名から列名へのマッピング コンポーネントを使用する必要があり、困惑しています。
複数の調査テーブルがあります。簡単にするために、2010 年のもの (「d2010」と呼ばれる) と 2011 年のもの (「d2011」と呼ばれる) の 2 つがあるとします。行は調査に対応し、列 ('c1'、'c2'、'c3'、... 'cN' という名前であると想定できます) は質問への回答に対応します。したがって、「d2010」は次のようになります
id c1 c2 c3 .. cX
survey 1
survey 2
survey 3
...
survey N
「d2011」は次のようになります
id c1 c2 c3 .. cY
survey 1
survey 2
survey 3
...
survey N
主な目的は、特定の質問に対する回答が 2010 年から 2011 年にかけてどのように変化したかを示すことです。具体的には、私の目標は、特定の回答について、2 年間で調査がどのように異なるかを示す新しいテーブル (3 つの列を持つ) を作成する SQL コマンドを作成することです。
id 2010-response 2011-response
survey 1
survey 2
survey 3
...
survey N
列名が一貫していた場合、必要なのは次のような単純なものでした。
select d2011.id, d2010.c1 as 'last year', d2011.c1 'this year' from d2010 join d2011 on d2010.id=d2011.id;
残念ながら、テーブルの作成者は列名の一貫性を保っていませんでした。例えば、
c1 of 2010 corresponds to c2 of 2011
c2 of 2010 corresponds to c1 of 2011
c3 of 2010 corresponds to c3 of 2011
c4 of 2010 corresponds to c7 of 2011
...
だから私がやろうとしてきたのは、次のようなものを入力することです
select d2010.id, d2010.c1 as 'last year', d2011.f(c1) 'this year' from d2010 join d2011 on d2010.id=d2011.id;
ここで、「d2011.f(c1)」は、2010 年の列名を 2011 年の列名にマップする関数の使用を示します。マッピングは、数式で表現できるほど単純ではないため、何らかの結果をもたらすテーブルが必要であると想定します。お気に入り
2010 2011
c1 c2
c2 c1
c3 c3
c4 c7
必要な結合操作を SQL で表現する方法はありますか? つまり、マップテーブルで、以下を標準SQL(一般)とSQLite(特に)に変換する方法はありますか?
select d2011.id, f(d2010.c1) as 'last year', d2011.c1 'this year' from d2010 join d2011 on d2010.id=d2011.id;.id;
よろしくお願いします!