0
我有下面的一條查詢,它運行但沒有產生我想要的東西。Oracle - 使用案例聲明與計數
查詢:
select id
,CASE WHEN COUNT(id) > 1 THEN 'X'
ELSE ' ' END AS Dual
from x
group by id
結果:
ID Dual
1
1
我想看看:
ID Dual
1 x
1 x
我有下面的一條查詢,它運行但沒有產生我想要的東西。Oracle - 使用案例聲明與計數
查詢:
select id
,CASE WHEN COUNT(id) > 1 THEN 'X'
ELSE ' ' END AS Dual
from x
group by id
結果:
ID Dual
1
1
我想看看:
ID Dual
1 x
1 x
甲骨文設置:
CREATE TABLE x (id INT);
INSERT INTO X VALUES (1);
INSERT INTO X VALUES (1);
INSERT INTO X VALUES (2);
查詢:
SELECT id,
CASE WHEN COUNT(1) OVER (PARTITION BY id) > 1
THEN 'X'
ELSE ' '
END AS Dual
FROM x;
輸出:
ID DUAL
---------- ----
1 X
1 X
2
如果你的表X中有兩行,都與ID = 1,你似乎暗示,那麼這是不是查詢結果。使用id by group子句不會得到id = 1的兩行。請澄清。
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
這就是您的整個查詢?如果按ID分組,您爲什麼希望看到ID = 1的多行? – ruudvan