2016-06-28 3 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, 당신은 오라클 태그를 추가해야합니다 언급. 그리고 오라클은 피벗을 할 수 있습니다. 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 문을 포함하여 성능에 도움이 될 수 있습니까? 어디에서 사용자가 ('캐롤', '그렉', '빌') 나는 다른 요인에 너무하지만 그냥 생각에 따라 달라집니다. – Matt

+0

Juergen D에게 감사드립니다. 이것은 훌륭하게 작동했습니다! – Mirth

관련 문제