0

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

任何帮助将不胜感激

4

1 回答 1

2

因为CASEGROUP BY. 此外,GROUP BY不是必需的,因为您已经在过滤子句中的football行:WHERE

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

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

演示

于 2012-09-23T19:49:40.740 回答