- PR -

分数から分子を取出し、それをサマリーする方法について

投稿者投稿内容
ろでおぼーい
会議室デビュー日: 2008/08/22
投稿数: 5
投稿日時: 2008-10-09 12:51
乱暴な方法かもしれませんが、/があれば小数点に変換して切り捨てれば、
分子だけの合計が取得できると思います。

SELECT a.NO, Sum(Int(Replace(数量,"/","."))) AS 式1
FROM a
GROUP BY a.NO;
ひろ
ベテラン
会議室デビュー日: 2003/12/26
投稿数: 97
投稿日時: 2008-10-09 13:17
引用:

rainさんの書き込み (2008-10-09 12:02) より:
case文での分岐と、sum() による合計を一緒にやろうとして失敗している風ですので、いったん

no tmp
1 2
2 5
3 10

のような結果を取得するようなクエリを書いて、そのtmp列に対して sum() で合計してあげればいいんじゃないでしょうか。



ご返信ありがとうございます。
上記結果を得る過程で、'/'の位置を探し出してsubstringする必要があると思います。

よって最初の段階からケース文で動的に振り分けない限り
実現不可能と考えております。

例えば、値に'/'が存在しないもに対して、substring(数値,start,end)
すると、endに0を指定するために、indexエラーが発生してしまう。
よって、最初の段階からケース文で判断する必要があるのではないでしょうか。

[ メッセージ編集済み 編集者: ひろ 編集日時 2008-10-09 13:20 ]
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2008-10-09 13:22
そもそも、数量に設定されている値が、分子/分母または分子の数値として計算できる正しい値なのかどうか?
それが保証されないならいくらSQLで頑張っても無駄でしょう。
分母が0の場合とか
ひろ
ベテラン
会議室デビュー日: 2003/12/26
投稿数: 97
投稿日時: 2008-10-09 13:35
引用:

ろでおぼーいさんの書き込み (2008-10-09 12:51) より:
乱暴な方法かもしれませんが、/があれば小数点に変換して切り捨てれば、
分子だけの合計が取得できると思います。

SELECT a.NO, Sum(Int(Replace(数量,"/","."))) AS 式1
FROM a
GROUP BY a.NO;




ありがとうございます!><
当方法で解決しました。
大変お騒がせしました。


rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-10-09 13:57
解決した後なので余計なのですが、一応。

引用:

ひろさんの書き込み (2008-10-09 13:17) より:
引用:

rainさんの書き込み (2008-10-09 12:02) より:
case文での分岐と、sum() による合計を一緒にやろうとして失敗している風ですので、いったん

no tmp
1 2
2 5
3 10

のような結果を取得するようなクエリを書いて、そのtmp列に対して sum() で合計してあげればいいんじゃないでしょうか。



ご返信ありがとうございます。
上記結果を得る過程で、'/'の位置を探し出してsubstringする必要があると思います。

よって最初の段階からケース文で動的に振り分けない限り
実現不可能と考えております。

例えば、値に'/'が存在しないもに対して、substring(数値,start,end)
すると、endに0を指定するために、indexエラーが発生してしまう。
よって、最初の段階からケース文で判断する必要があるのではないでしょうか。


case文を使って、上記の結果を得ることはできますよね?
その結果に対して、sum() で集計すればいいのでは? という意見です。

たぶんこんな感じ。
コード:
SELECT
  no,
  SUM(tmp)
FROM
  SELECT
    no,
    (CASE ...) as tmp
  FROM
    a
GROUP BY
  no

スキルアップ/キャリアアップ(JOB@IT)