2012-09-23 106 views
0

我對Oracle很新,雖然我正在練習一些我遇到的問題「invalid character(SQL-HY000)」。oracle爲什麼說無效字符?

下面是示例表和數據,我用我的做法

CREATE TABLE games (
    id INT NOT NULL PRIMARY KEY , 
    city VARCHAR(20), 
    name VARCHAR(20) 
);  

INSERT INTO games(id,city,name) VALUES (2004,'Athens','football'); 
INSERT INTO games(id,city,name) VALUES (2008,'Beijing','cricket'); 

SELECT id, COUNT(*) over() as rowcount 
    FROM games g 
where name='football' 
GROUP BY CASE 
      WHEN name='football' 
      THEN g.name 
      END; 

什麼是select語句無效字符?

任何幫助,將不勝感激因爲GROUP BYCASE

回答

2

。此外,GROUP BY不是必需的,因爲你已經是WHERE子句中過濾football行:

SELECT id, COUNT(*) OVER() as rowcount 
FROM games g 
WHERE name = 'football' 

當您使用解析函數,如COUNT(*) OVER(),你並不需要使用GROUP BY。他們有不同的目的。

DEMO

+0

非常感謝您的幫助 – user964147

+0

您對分析功能和分組沒有要求,不適用於此場景;但是GROUP BY中的CASE沒有任何問題 - 這不會導致「無效字符」錯誤(儘管在舊數據庫版本中它可能不起作用)。 –

+0

@Jeffrey Kemp我有這樣的情況,我應該使用GROUP BY子句與CASE,當我像上面一樣使用Oracle時拋出上述錯誤。什麼可能是共鳴。任何猜測? – user964147

相關問題