は(実際にデータがXMLである、ID_A、ID_B、タイプが実際の整数である)私は、次の表を持っていると言う:この表を変換してください。 "group by"のような "coalasce"のようなもので?
id_a id_b type data
-----+------+--------+--------
1 1 X X1
1 1 Y Y1
7 17 Y Y2
7 99 X X2
9 20 Z Z1
ID_A、ID_Bとタイプの組み合わせはユニークです。 私が書き込むプログラムは、私が気にする型のリストを入力として取得します。このリストは、Xが含まれていることを言うとY.は今、私は次のような結果に終わるいくつかのSQL-マジックをやってみたい。すなわち
id_a id_b X Y
-----+------+--------+--------
1 1 X1 Y1
7 17 NULL Y2
7 99 X2 NULL
:私はID_AとID_B、リストのすべてのデータを含む行をしたいです列内のデータ
私は、次の表で終わる自分でクエリを見つけることができました:
table:
id_a id_b data_x data_y
-----+------+--------+--------
1 1 X1 NULL
1 1 NULL Y1
7 17 NULL Y2
7 99 X2 NULL
クエリを:
select
id_a,
id_b,
case when type = 'X' then data
end data_x,
case when type = 'Y' then data
end data_y,
from
mytable
order by
id_a,id_b
この表では、それが
-
ことが保証されています
- data_xまたはdata_yの最大値はNULLでなくてもかまいません(NULLもOKですが、もちろんで簡単にフィルタリングできます))
- data_xとdata_yは、それぞれid_aとid_bの組み合わせで一意です。私は今、その後
select coalesce(case ... data_y),coalesce(case ... data_y) from ... group by id_a,id_b
を行うことができれば
そして、私は私がなりたい場所を、私は信じているだろうが、残念ながら合体は、集計関数が、スカラー関数ではありません。
私のクライアントアプリケーション(Javaで書かれています)では、もちろん行をマージすることはできますが、行をマージすることはできますが、これはあまりエレガントではありません。これを解決するための「かなり」の方法がありますか?
...
かなりスマート、はい...あなたとソリューションの間の厳しい決断。今の私はあなたのことを選んだ:-)。 – yankee