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

CASE内のためGROUP BY。また、句ですでに行をGROUP BYフィルタリングしているため、必須ではありません。footballWHERE

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

などの分析関数を使用する場合、 を使用するCOUNT(*) OVER()必要はありませんGROUP BY。それらは異なる目的を果たします。

デモ

于 2012-09-23T19:49:40.740 に答える