に行を回す:Oracleは、私はこのようになりますテーブルを持つ列
station node group
13859160 13195576 high
13859160 42502030 low
13859165 42283197 low
13859165 42283198 high
13859166 13190800 low
13859166 13190801 low
13859166 13195587 high
それは、このステートメントを使用して作成することができます。
CREATE TABLE nodes
("station" int, "node" int, "group" varchar(6))
;
と、この文でいっぱい:
insert into nodes values (13859160, 13195576, 'high');
insert into nodes values (13859160, 42502030, 'low');
insert into nodes values (13859165, 42283197, 'low');
insert into nodes values (13859165, 42283198, 'high');
insert into nodes values (13859166, 13190800, 'low');
insert into nodes values (13859166, 13190801, 'low');
insert into nodes values (13859166, 13195587, 'high');
このテーブルを照会して、上位と下位が列になるようにして、結果が次のようになるようにします。
Station high low
13859160 13195576 42502030
13859165 42283198 42283197
13859166 13195587 13190801
13859166 13195587 13190800
複数の「低」の行を持っていた何のステーションが、それは容易ではないだろうところ、私はハイとローを取得するには、このような何かを行うことができますが場合:
になりselect
"station",
case when "group" = 'high' then "node" end as high,
case when "group" = 'low' then "node" end as low
from "NODES";
:
、その後に結果を取得するには、集計関数を使用するもののように:
select
"station",
max(case when "group" = 'high' then "node" end) as high,
max(case when "group" = 'low' then "node" end) as low
from "NODES"
group by "station";
これはもたらす:ただし、1 startionは、複数の「低」entiesを有する場合、Iがそれぞれ低エントリごとに1行を必要と、その行はそのため、同じ「高」のエントリを含める必要があり
両方の行のステーション。
どのようにすればよいでしょうか?
これはよくある質問です。いくつかの[oracle + pivot'の既存のスレッド](https://stackoverflow.com/search?q=%5Boracle%5D+pivot) – APC
を参照してください。複数の高低がある場合はどうなりますか? –
そこには1つのステーションあたり1つの高さしかありませんが、複数の低 – ErikL