ブログ
合計値がおかしい
MySQLを使用して月初日と前月末締めの集計値を出す際に、UNIONを使った以下のようなSQL文を作成してみました。
これを実行したところ、どうも計算結果がおかしい。
前月分の対象データが3件で、sum(b)の望ましい結果が「19」だとすると、なぜか「3139」と表示されます。
前月分だけを実行すると、きちんと「19」と表示されるのを確認。
どうやら月初日のSELECT文部分が影響しているらしい。
そこで、初めのselect文を以下の通り書き換えると、希望通りの結果となりました。
カラムaのデータ型がintで、月初日のカラムaを計算したくないために文字列としているのが悪いのでしょうから、データ型をvarcharに切り替えると良いのかも。
時間ができたら実験してみようかな。
SELECT d.* from (
(
select '' as a from tbl where c = '2016-06-01'
) union (
select sum(b) as a from tbl where c <= '2016-05-31' and c >= '2016-05-01'
)
) d
前月分の対象データが3件で、sum(b)の望ましい結果が「19」だとすると、なぜか「3139」と表示されます。
前月分だけを実行すると、きちんと「19」と表示されるのを確認。
どうやら月初日のSELECT文部分が影響しているらしい。
そこで、初めのselect文を以下の通り書き換えると、希望通りの結果となりました。
select cast('' as unsigned) as a from tbl where c = '2016-06-01'
時間ができたら実験してみようかな。