1

こんにちは、私はpl sqlが初めてで、次のようなクエリを作成しようとしています:

SELECT column1, sum (column2)
FROM table1
WHERE sum (column2) <> 0
GROUP BY column1

基本的に私がやりたいことは、column1 でグループ化された sum(column2) が <> 0 である行のみを選択することです。

このクエリでは、WHERE 句で、合計操作を column1 でグループ化する必要があることが指定されていないため (または、少なくともこれが問題だと思います)、理にかなった ORA-00934 エラーが発生します。

次のようなさまざまなソリューションを試しました。

SELECT CASE WHEN SUM(column2) <> 0 then (SUM(column2), column1) END 
...

しかし、pl-sql はそれを好まない。

作品は次のとおりです。

SELECT column1, case when SUM(column2) <> 0 then SUM(column2) END
...

しかし、この場合、結果は SELECT 列 1、SUM(列 2) のような疑似テーブルであるため、必要なものは正確にはありません... SUM(列 2) = 0 の白いフィールドが表示されるという事実を除いて行全体を見たくありませんが。

誰でも私を助けることができますか?

ありがとうございました

4

2 に答える 2

1

WHERE句を句に入れるだけですHAVING

SELECT column1, sum (column2)
FROM table1
GROUP BY column1
HAVING sum (column2) <> 0

HAVING句は、適用後に評価さGROUP BYれます。

于 2013-04-04T09:55:08.317 に答える
0

HAVING 句を使用します。

SELECT column1, sum (column2)
FROM table1
GROUP BY column1
HAVING sum (column2) <> 0

Oracle PL/SQL HAVING 句は、GROUP_BY 句によって形成されたグループをフィルタリングまたは制限するために使用されます。

ソース

于 2013-04-04T09:55:38.833 に答える