SQLで桁上げ?

解決


message  2007-05-11 11:13:59  No: 26108  IP: 192.*.*.*

[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
となってほしいのです。

編集 削除
sk  2007-05-11 11:38:55  No: 26109  IP: 192.*.*.*

firebird手元にないんで自信ありませんが
select SUM(10_GRADE) + (sum(1_GRADE) / 10), mod(SUM(1_GRADE), 10) from hoge
こんな感じでダメですか?

編集 削除
message  2007-05-11 13:03:45  No: 26110  IP: 192.*.*.*

skさん、ありがとうございます。
SUM(10_GRADE) + (SUM(1_GRADE) / 10)
はうまくいったのですが、
MOD(SUM(1_GRADE),10) はだめでした。
MODが使えないみたいです。
今はMODに変わる計算式を考え中です・・・( -_- )

編集 削除
Ru  2007-05-11 13:38:23  No: 26111  IP: 192.*.*.*

modの代わり、INTEGERが使用できなかったら無理・・・

SUM(1_GRADE) - INTEGER(SUM(1_GRADE) / 10) * 10

編集 削除
sk  2007-05-11 13:47:17  No: 26112  IP: 192.*.*.*

modが使えないってことは標準UDFがロードされてないのかな
UDF使えたほうが何かと便利なんで、ib_udf.sqlを実行しておくといいですよ

編集 削除
message  2007-05-11 17:16:35  No: 26113  IP: 192.*.*.*

Ruさん、ありがとうございます。
INTEGER 使えなかったです。

skさん、ib_udf.sqlは、どう実行すればよいのでしょうか。

編集 削除
sk  2007-05-11 18:05:06  No: 26114  IP: 192.*.*.*

http://firebird.skr.jp/wiki/%B1黻%BBҤ%C8UDF#content_1_7
この辺参照してください

編集 削除
message  2007-05-11 18:37:09  No: 26115  IP: 192.*.*.*

isql.exeを起動して、input [ib_udf.sqlのフルパス]
で、実行できました。
Modを早速使ってみると、
SELECT 
  SUM(10_GRADE) + (SUM(1_GRADE) / 10) ,
  MOD(SUM(1_GRADE),10) 
・・・
・・・
で、考えどおりに表示されました。ありがとうございました。

編集 削除