2016-03-25 55 views
0

ile Bir Vaka Beyanı Kullanma Aşağıdaki sorgu parçam var ve çalışıyorum ama istediğimi üretmiyor.Oracle - Count

Sorgu:

select id 
,CASE WHEN COUNT(id) > 1 THEN 'X' 
ELSE ' ' END AS Dual 
from x 
group by id 

Sonuçlar:

ID Dual 
1  
1 

isterim görmek için:

ID  Dual 
1   x 
1   x 
+0

Bu, tüm sorgunuz mu? Kimliğe göre gruplanıyorsanız neden ID = 1 ile birden fazla satır görmeyi bekliyorsunuz? – ruudvan

cevap

1

Oracle Kurulumu:

CREATE TABLE x (id INT); 
INSERT INTO X VALUES (1); 
INSERT INTO X VALUES (1); 
INSERT INTO X VALUES (2); 

Sorgu:

SELECT id, 
     CASE WHEN COUNT(1) OVER (PARTITION BY id) > 1 
      THEN 'X' 
      ELSE ' ' 
      END AS Dual 
FROM x; 

Çıktı: Eğer ima görünüyor gibi masa x iki sıra, id = 1 ile hem varsa

, o DEĞİLDİR
 ID DUAL 
---------- ---- 
     1 X  
     1 X 
     2  
1

sorgunuzun sonucu. ID = 1 ile iki satır almazsınız. Lütfen açıkla.

SQL> create table x (id) as select 1 from dual union all select 1 from dual; 
Table created. 
Elapsed: 00:00:00.01 

SQL> select * from x; 
     ID 
---------- 
     1 
     1 
2 rows selected. 
Elapsed: 00:00:00.08 

SQL> select id 
    2 ,CASE WHEN COUNT(id) > 1 THEN 'X' 
    3 ELSE ' ' END AS Dual 
    4 from x 
    5 group by id 
    6/

     ID DUAL 
---------- ---- 
     1 X 
1 row selected. 
Elapsed: 00:00:00.13