为什么oracle说无效的字符?

时间:2012-09-23 19:46:42

标签: sql oracle

我是Oracle的新手,我正在练习一些我遇到问题“无效字符(SQL-HY000)”的例子。

以下是我用于练习的样本表和数据

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语句中的无效字符是什么?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

由于CASE中的GROUP BY。此外,GROUP BY不是必需的,因为您已经过滤了football子句中的WHERE行:

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

使用分析函数(例如COUNT(*) OVER())时,不需要使用GROUP BY。它们用于不同的目的。

<强> DEMO