LoginSignup
rect8530
@rect8530

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

OVER PARTITION BYの使い方

解決したいこと

OVER PARTITION BYの使い方(他のsqlとの組み合わせ)を知りたい

Oracle SQLでデータベースをつくっています。
SELECT句でsumを使っているため、GROUP BYでグルーピングしています。
エラー解消のため、OVER PARTITION BYを書こうと思いましたが、
書き方がわかりません。
全体を括ればいいのか、NVLの前にPARTITION BYを書けばよいのか、
わかる方、ヒントだけでもいいので回答をお願いします。

発生している問題・エラー

出ているエラーメッセージを入力
```GROUP BYの式ではありません
 右カッコがありません

言語名:Oracle  SQL

SELECT
sum(NVL(GJL.ACCOUNTED_DR,0) - (NVL(GJL.ACCOUNTED_CR,0))),
GJL.JE_HEADER_ID,
...
,(NVL(OVER(PARTITION BY(GJL.ACCOUNTED_DR,0))) - NVL(OVER(PARTITION BY(GJL.ACCOUNTED_CR,0))))--本体行
+
(SELECT
NVL(OVER(PARTITION BY GJL2.ACCOUNTED_DR,0)) - NVL(OVER(PARTITION BY GJL2.ACCOUNTED_CR,0))--消費税行
FROM
GL_JE_LINES  GJL2
WHERE 1=1
AND GJL2.JE_HEADER_ID = GJL.JE_HEADER_ID
AND GJL2.JE_LINE_NUM = GJL.JE_LINE_NUM
))  SUM --合計額

FROM GL_JE_LINES GJL
INNER JOIN GL_JE_HEADERS GJH
ON GJL.JE_HEADER_ID = GJH.JE_HEADER_ID
・・・
GROUP BY
GJL.JE_HEADER_ID
・・・



### 自分で試したこと
OVER(PARTITION BYの位置を様々に変えてみましたが、エラーが解消しません。
0

1Answer

group by しているのに、sumがエラーになった理由は何だったのでしょうか?

0Like

Comments

  1. @rect8530

    Questioner

    正規化するため、途中にREGEXP_SUBSTR関数を使っているのですが、それが原因でエラーになっているようです。(この部分をコメントアウトして確認済み)
    このエラーを解消するため、OVER PARTITION BYを利用しようと考えています。

  2. 正規化するため、途中にREGEXP_SUBSTR関数を使っているのですが

    その項目を group by の項目に含めていますか?

Your answer might help someone💌