• 締切済み

Mysql 参照 計算

col1 |col2 |col3 |col4 |col5 1001 |1003 |20 |15 |5 1002 |1001 |23 |20 |3 1003 |1002 |40 |36 |4 1003 |1003 |40 |32 |4 1003 |1003 |30 |28 |4 1004 |1003 |20 |15 |5 1004 |1004 |14 |10 |5 1005 |1004 |23 |17 |6 1006 |1005 |20 |13 |7 のようなテーブルを作成し、col1に対してcol2は、行ずれで入力されています。 col1とcol2が違う場合、col3-col5をcol4へ 。 col1=col2の場合、1行上のcol4-col5としています。 EXELでは =IF(A3=B3,D2-E3,C3-E3) として出力でるのですが、 Mysqlでこれを実現するにはどうしたら良いでしょうか。 col1とcol2がマッチしない場合は、通常処理としてcol3-col5をcol4に行い、 マッチする場合は、通常処理で行われたcol4-col5をcol4へ出力します。 マッチが連続すれば、col4-col5が繰り返されるイメージです。 よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>1行上のcol4-col5 RDBには1行上という考え方はありません。 上下関係を確定するカラムとそのロジックを提示しなければ ご提示の命題を解決する手段はありません。

spider32
質問者

お礼

ありがとうございます。大変参考になりました。

回答No.1

こんにちは。 case文を使うと、ifのような分岐処理ができます。

spider32
質問者

お礼

ありがとうございます。 case 文を使ってやったのですが、col1=col2が連続した場合、col4に結果を残しながら計算するところでうまくいきません。 case when col1=col2 then col4-col5 else col3-col5 end としても、 次の行が再びcol1=col2であった場合、先に処理したcol4-col5が保持されずに、元々col4が持っていた数値からcol5を差し引くことになってしまいます。 col1|col2|col3|col4|col5 1003|1002|40|36|4 1003|1003|40|32|4 1003|1003|30|28|4 の場合、1行目はcol1とcol2はマッチしないため、col3-col5をcol4へ代入し、 2行目はcol1=col2であるために1行目のcol4-2行目のcol5をお2行目のcol4へ代入。 col1=col2が続く限りこの処理を行いたいのです。 よろしくお願いします。

関連するQ&A