みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ASPからのSQL文でエラーが発生

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毎に金額の合計値などを集計したいというような感じです。
よろしくお願い致します。

投稿日時 - 2007-02-16 13:14:24

QNo.2757311

困ってます

質問者が選んだベストアンサー

何となくなんですが・・

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'))

という書き方を試してください。
(あてずっぽのカンがあたっていればなんですけどね)

投稿日時 - 2007-02-17 02:03:59

お礼

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

投稿日時 - 2007-02-19 10:12:15

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

No.1です。
後はぱっと見「COUNT(連番) AS kensu」の後に「,」が無い事くらいですかね?
転記する際に間違えられたのかも知れませんが・・・。

投稿日時 - 2007-02-16 14:59:18

お礼

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

投稿日時 - 2007-02-16 15:26:57

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

※私もよくやるので日頃から注意するよう心がけています。

投稿日時 - 2007-02-16 13:43:13

お礼

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

投稿日時 - 2007-02-16 14:16:29

あなたにオススメの質問