我有模式的表格如下列值到頭甲骨文
Empid Field Type Field Value
123 Name John
123 Age 33
124 Name Tijo
124 Age 24
輸出應該在followinf格式
Empid Name Age
123 John 33
124 Tijo 24
我怎樣才能實現這種從Oracle數據庫使用查詢?
我有模式的表格如下列值到頭甲骨文
Empid Field Type Field Value
123 Name John
123 Age 33
124 Name Tijo
124 Age 24
輸出應該在followinf格式
Empid Name Age
123 John 33
124 Tijo 24
我怎樣才能實現這種從Oracle數據庫使用查詢?
聽起來像你正在試圖PIVOT
你的表。一種選擇是使用MAX
與CASE
:
select empid,
max(case when fieldtype = 'Name' then fieldvalue end) Name,
max(case when fieldtype = 'Age' then fieldvalue end) Age
from yourtable
group by empid
這種類型的行轉變成列稱爲一個支點。有幾種方法可以做到這一點。
由於使用的是Oracle 11g中,你可以使用旋轉功能:
select empid, Name, age
from
(
select empid,
fieldtype,
fieldvalue
from yt
)
pivot
(
max(fieldvalue)
for fieldtype in ('Name' as Name, 'Age' as Age)
);
在此之前的Oracle 11g中,你可以使用一個聚合函數與CASE
表達:
select empid,
max(case when fieldtype = 'Name' then fieldvalue end) name,
max(case when fieldtype = 'Age' then fieldvalue end) age
from yt
group by empid;
您還可以通過多次參加在桌子上得到的結果:
select t1.empid,
t1.fieldvalue name,
t2.fieldvalue age
from yt t1
left join yt t2
on t1.empid = t2.empid
and t2.fieldtype = 'Age'
where t1.fieldtype = 'Name';
見SQL Fiddle with Demo。每個版本給出結果:
| EMPID | NAME | AGE |
----------------------
| 123 | John | 33 |
| 124 | Tijo | 24 |
@JijilPK - np,很高興我們可以幫助! – sgeddes 2013-04-24 17:14:20