Oracle Pivot Fonksiyonu

Merhaba,
Bazen öyle bir durumla karşılaşırsınız ki satırlarınızın sütun olmasını istersiniz işte o zaman pivot fonksiyonu yardımınıza koşar.pivot fonksiyonu Oracle 11 g ile gelmiştir.
create table pivot_ex (
  a  varchar2(10),
  b  number,
  c  char(1)
);

pivot_ex adındabir tablo create ettik.kayıt ekleyelim.
insert into pivot_ex values ('foo',  1, 'y');
insert into pivot_ex values ('foo',  2, 'y');
insert into pivot_ex values ('foo',  3, 'y');
insert into pivot_ex values ('foo',  4, 'y');
insert into pivot_ex values ('foo', 99, 'n');
insert into pivot_ex values ('bar',  9, 'y');
insert into pivot_ex values ('bar', 11, 'y');
insert into pivot_ex values ('bar',-42, 'n');
insert into pivot_ex values ('baz', 30, 'y');
insert into pivot_ex values ('baz', 70, 'n');

şimdi eklediğimiz kayıtları görelim.

select * from pivot_ex;

 A     B    C
foo    1    y
foo    2    y
foo    3    y
foo    4    y
foo    99   n
bar    9    y
bar    11   y
bar   -42   n
baz    30   y
baz    70   n

select
 alan1, alan2, alan3
from pivot_ex
 pivot(
 sum(b) for a in ('foo' alan1,'bar' alan2,'baz' alan3)
 )
where c = 'y';

sorgusu ile satırları sütun yapmış olduk  a alanı için her bir değer için varolan değerlerin toplamını
sum fonksiyonu ile aldık ve gösterdik.
ALAN1 ALAN2 ALAN3
 10    20    30

Burda sum yerine max,min,avg gibi fonksiyonlarıda kullanabiliriz.
select
 alan1, alan2, alan3
from pivot_ex
 pivot(
 min(b) for a in ('foo' alan1,'bar' alan2,'baz' alan3)
 )
where c = 'y';
ALAN1 ALAN2 ALAN3
 1     9    30
Share:
spacer

1 yorum: