DECODE - Count The Number of Columns
Gene bir forum da sorulan güzel bir soruyu paylaşmak istiyorum.
|
MYID
|
COL1
|
COL2
|
COL3
|
|---|---|---|---|
|
abc
|
Y
|
Y
|
Y
|
|
xyz
|
N
|
Y
|
N
|
|
abc
|
Y
|
Y
|
N
|
Yukarıda ki yapıda ve verileri içeren tablo isminde bir tablomuz olsun. Bizden MYID alanı bazında kaç adet Y değerine sahip olduğumuzun istatistiği isteniyor. Bunu nasıl yaparız ? Önce tablomuzu oluşturup içini dolduralım.
CREATE TABLE tablo (myid varchar2(3),col1 VARCHAR2(1),col2 VARCHAR2(1),col3 VARCHAR2(1));
INSERT INTO tablo VALUES ( ‘abc’,'Y’,'Y’,'Y’);
INSERT INTO tablo VALUES ( ‘xyz’,'N’,'Y’,'N’);
INSERT INTO tablo VALUES ( ‘abc’,'Y’,'Y’,'N’);
Şimdi de istenen SQL sorgusunu yazalım.
SELECT myid, SUM(DECODE(col1, ‘Y’, 1, 0) + DECODE(col2, ‘Y’, 1, 0)+ DECODE(col3, ‘Y’, 1, 0)) AS TOTAL
FROM tablo
GROUP BY myid;
Sonuç mu ?
MYID TOTAL
abc 5
xyz 1

