アプリ版:「スタンプのみでお礼する」機能のリリースについて

ASPでoracleのデータを集計しようとしたところ、SQL文でエラーが発生してしまいました。
(ORA-00911: 文字が無効です。)
同じSQL文を「SQLPlus Worksheet」で実行してみたら、問題なく実行できました。
エラーの原因を教えてください。

SELECT
CASE
WHEN 処理CD = '1' AND 集計F = 'Y' THEN '1Y'
WHEN 処理CD = '1' AND 集計F <> 'Y' THEN '1N'
END AS kubun,
COUNT(連番) AS kensu
SUM(金額) AS kingaku
FROM aaa
WHERE 日付 = '200701'
GROUP BY
CASE
WHEN 処理CD = '1' AND 集計F = 'Y' THEN '1Y'
WHEN 処理CD = '1' AND 集計F <> 'Y' THEN '1N'
END

kubun毎に金額の合計値などを集計したいというような感じです。
よろしくお願い致します。

A 回答 (3件)

何となくなんですが・・



SELECT DECODE(処理CD,'1',DECODE(集計F,'Y','1Y','1N')) kubun,COUNT(連番) kensu,SUM(金額) kingaku
FROM aaa
WHERE 日付 = '200701'
GROUP BY DECODE(処理CD,'1',DECODE(集計F,'Y','1Y','1N'))

という書き方を試してください。
(あてずっぽのカンがあたっていればなんですけどね)
    • good
    • 0
この回答へのお礼

お礼が遅くなりましてすみません。
出来ました!
何故CASE式が使えないのかは不明ですが・・・
DECODEもGROUP BY句に入れられるんですね。
グループ化するにはCASE式を使わないとダメだと思っていました。
助かりました。ありがとうございました。

お礼日時:2007/02/19 10:12

No.1です。


後はぱっと見「COUNT(連番) AS kensu」の後に「,」が無い事くらいですかね?
転記する際に間違えられたのかも知れませんが・・・。
    • good
    • 0
この回答へのお礼

はい。すみません。
転記する際に間違えました。
ASPからテキストに吐き出して、SQLで実行してみるというのを試してみます。
ありがとうございます。

お礼日時:2007/02/16 15:26

このSQLを変数に代入するときに区切りの空白は入っていますか?


行末だからといって勝手に改行や空白は入りませんよ。
ASPからファイルにでも出力されたSQLを実行される事をお勧めします。

※私もよくやるので日頃から注意するよう心がけています。
    • good
    • 0
この回答へのお礼

ありがとうございます。
実際のSQL文には空白は入っています。
ASPの RESPONSE.WRITE でSQL文を代入した変数を表示して確認しました。
やっぱり、見えない部分が原因でしょうか。。。

お礼日時:2007/02/16 14:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!