2012-09-23 48 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

相关问题