掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SQLの書き方 (ID:37603)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>select trunc(age / 10) as A, count(age) from tableA group by trunc(age / 10);は、すでに実行してみたのですが、同じエラーが表示されてしまいました。 もう一つのやり方を試しましたら(questさんのやり方)、TQueryのTStringに書き込みましたら、うまくいったのですが、以下のコードをTbuttonのonclickに書き、実行したら「ORA-00937: 単一グループのグループ関数ではありません」というエラーが出てきました。 お手数ですが、修正すべき点を教えていただけないでしょうか? 注意:sql文の途中で改行されていますが、実際のコードは改行されていません。 with query1 do begin close; sql.Clear; sql.add('select sum(age0) as 十歳未満, sum(age10) as 十代, sum (age20) as 二十代'); sql.add(', sum(age30) as 三十代, sum(age40) as 四十代, sum (age50) as 五十代'); sql.add(', sum(age60) as 六十代, sum(age70) as 七十代, sum (age80) as 八十歳以上'); sql.add('from (select 1 as age0, 0 as age10, 0 as age20, 0 as age30, 0 as age40'); sql.add(', 0 as age50, 0 as age60, 0 as age70, 0 as age80 from visitor where age < 10)'); sql.add(' union all select 0 as age0, 1 as age10, 0 as age20, 0 as age30, 0 as age40'); sql.add(', 0 as age50, 0 as age60, 0 as age70, 0 as age80 from visitor'); sql.add(', where age between 10 and 19 union all select 0 as age0, 0 as age10'); sql.add(', 1 as age20, 0 as age30, 0 as age40, 0 as age50, 0 as age60, 0 as age70'); sql.add(', 0 as age80 from visitor where age between 20 and 29 union all'); sql.add(' select 0 as age0, 0 as age10, 0 as age20, 1 as age30, 0 as age40, 0 as age50'); sql.add(', 0 as age60, 0 as age70, 0 as age80 from visitor where age between 30 and 39'); sql.add(' union all select 0 as age0, 0 as age10, 0 as age20, 0 as age30, 1 as age40, 0 as age50'); sql.add(', 0 as age60, 0 as age70, 0 as age80 from visitor where age'); sql.add(', between 40 and 49 union all select 0 as age0, 0 as age10, 0 as age20'); sql.add(', 0 as age30, 0 as age40, 1 as age50, 0 as age60, 0 as age70, 0 as age80'); sql.add(' from visitor where age between 50 and 59 union all select 0 as age0'); sql.add(', 0 as age10, 0 as age20, 0 as age30, 0 as age40, 0 as age50, 1 as age60'); sql.add(', 0 as age70, 0 as age80 from visitor where age between 60 and 69'); sql.add(' union all select 0 as age0, 0 as age10, 0 as age20, 0 as age30, 0 as age40'); sql.add(', 0 as age50, 0 as age60, 1 as age70, 0 as age80 from visitor'); sql.add('where age between 70 and 79union all select 0 as age0, 0 as age10, 0 as age20'); sql.add(', 0 as age30, 0 as age40, 0 as age50, 0 as age60, 0 as age70, 1 as age80'); sql.add(' from visitor where age > 80)'); sql.add('where ID = :i_ID'); parambyName('i_ID').asinteger := strtoint(editID.Text); active := true; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.