- ろでおぼーい
- 会議室デビュー日: 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
|
|