[BD2006,Firebird]
SELECT文で、桁上げはできないでしょうか?
例えば、10_Grade(Smallint) , 1_Grade(Smallint) というフィールドがあるとして、
SELECT文のSUM(1_Grade)で合計した値が10を超えた場合、10_Gradeに+1される。
SELECT SUM(10_GRADE) , SUM(1_GRADE) FROM・・・・
で、SUM(10_GRADE)が5、SUM(1_GRADE)が25だった場合、表示されるのは
SUM(10_GRADE) SUM(1_GRADE)
7 5
となってほしいのです。
firebird手元にないんで自信ありませんが
select SUM(10_GRADE) + (sum(1_GRADE) / 10), mod(SUM(1_GRADE), 10) from hoge
こんな感じでダメですか?
skさん、ありがとうございます。
SUM(10_GRADE) + (SUM(1_GRADE) / 10)
はうまくいったのですが、
MOD(SUM(1_GRADE),10) はだめでした。
MODが使えないみたいです。
今はMODに変わる計算式を考え中です・・・( -_- )
modの代わり、INTEGERが使用できなかったら無理・・・
SUM(1_GRADE) - INTEGER(SUM(1_GRADE) / 10) * 10
modが使えないってことは標準UDFがロードされてないのかな
UDF使えたほうが何かと便利なんで、ib_udf.sqlを実行しておくといいですよ
Ruさん、ありがとうございます。
INTEGER 使えなかったです。
skさん、ib_udf.sqlは、どう実行すればよいのでしょうか。
http://firebird.skr.jp/wiki/%B1黻%BBҤ%C8UDF#content_1_7
この辺参照してください
isql.exeを起動して、input [ib_udf.sqlのフルパス]
で、実行できました。
Modを早速使ってみると、
SELECT
SUM(10_GRADE) + (SUM(1_GRADE) / 10) ,
MOD(SUM(1_GRADE),10)
・・・
・・・
で、考えどおりに表示されました。ありがとうございました。
ツイート | ![]() |