2016-06-28 88 views
0

我對PL/SQL有點新,我不確定最好的方法是比較同一個表中的數據。SQL - 從一個表比較數據

所以有一個表存儲用戶設置,但不是所有的用戶都有相同的設置。最好我用一個例子來展示它:

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 
... ...  ... 

比方說有成千上萬的用戶。我想以某種方式比較卡羅爾,格雷格和比爾之間的價值,但不想包括其他人(弗雷德等)。

是否有可能讓表看起來像這樣?

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

你提到的PL/SLQ,你應該添加了Oracle標籤。而且oracle可以做樞軸。看看這裏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('Carol','Greg','Bill')我知道這也取決於其他因素,但只是一個想法。 – Matt

+0

謝謝Juergen D,這個工作非常好! – Mirth