我是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语句中的无效字符是什么?
非常感谢任何帮助
答案 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 强>