2016-06-28 17 views
0

私はPL/SQLに少し慣れており、同じテーブルのデータを比較するのが最善の方法は何か分かりません。SQL - 1つのテーブルのデータを比較する

ユーザー設定を格納するテーブルがありますが、すべてのユーザーが同じ設定をしているわけではありません。それは私が例のスニペットでそれを示してベストです:

User Setting Value   
---- ------- ----- 
Carol Timezone GMT 
Carol PageSize 300 
Greg Timezone EST 
Greg PageSize 300 
Greg Duration 10 
Bill PageSize 250 
Bill Duration 20 
Fred Timezone 30 
... ...  ... 

はのは、何千人ものユーザーが存在しているとしましょう。私はキャロル、グレッグ、ビルの間の値をどういう形で比較したいのですが、他のもの(Fredなど)は含めたくありません。

テーブルをこのように見えるようにすることはできますか?

Setting Carol Greg Bill 
------- ----- ----- ---- 
Timezone GMT  EST  (null) 
PageSize 300  300  250 
Duration (null) 10  20 
+0

あなたはOracleのタグを追加する必要があり、PL/SLQ言及。そして、オラクルはピボットを行うことができます。ここをクリックhttp://sql-plsql-de.blogspot.de/2007/08/kreuztabellen-in-oracle11g-sql-pivot.html – Turo

答えて

1
select setting, 
     max(case when user = 'Carol' then value else null end) as Carol, 
     max(case when user = 'Greg' then value else null end) as Greg, 
     max(case when user = 'Bill' then value else null end) as Bill 
from your_table 
WHERE user IN ('Carol','Greg','Bill') 
group by setting 
+1

何千人ものユーザーがいる場合は、where文も含めるとパフォーマンスが向上する可能性がありますか?ユーザーIN( 'キャロル'、 'グレッグ'、 'ビル')私はそれが他の要素にもよるが、ちょうど考えていることを知っている。 – Matt

+0

Juergen Dさん、ありがとうございました! – Mirth

関連する問題