SQLで桁上げ?

解決


message  2007-05-11 20:13:59  No: 26108

[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 20:38:55  No: 26109

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


message  2007-05-11 22:03:45  No: 26110

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


Ru  2007-05-11 22:38:23  No: 26111

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

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


sk  2007-05-11 22:47:17  No: 26112

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


message  2007-05-12 02:16:35  No: 26113

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

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


sk  2007-05-12 03:05:06  No: 26114

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


message  2007-05-12 03:37:09  No: 26115

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加