私はこのクエリがうまく選択された理由を理解しようとしていますが、私はそれを使って一時テーブルを作成することはできません... IF = '', 0
ものは元のクエリに存在しませんでした潜在的に空の文字列になる可能性のあるものを合計しようとしていないことを確認してください。しかし、問題は解決しませんでした。これを選択した作品と、正しい結果セットを返します。MySQLのクエリは通常のSELECTとして動作しますが、CREATE TABLE ASでは動作しません。
SELECT
SUM(((IF(reserve_transactions.Revenue = '',
0,
reserve_transactions.Revenue) * IF(reserve_transactions.Confidence = '',
0,
reserve_transactions.Confidence))/100)) AS rawadjusted
FROM
(store_locations
LEFT JOIN reserve_transactions ON ((store_locations.ID = location_sales)))
GROUP BY store_locations.Loc_Long
しかし、これはしません:
CREATE TEMPORARY TABLE tmptable_which_doesnt_work AS SELECT
SUM(((IF(reserve_transactions.Revenue = '',
0,
reserve_transactions.Revenue) * IF(reserve_transactions.Confidence = '',
0,
reserve_transactions.Confidence))/100)) AS rawadjusted
FROM
(store_locations
LEFT JOIN reserve_transactions ON ((store_locations.ID = location_sales)))
GROUP BY store_locations.Loc_Long
エラーは次のとおりです。Error Code: 1292. Truncated incorrect DECIMAL value: ''
私は状況は同じである他のクエリを持って、実際に。時には他の切り捨てられた誤ったタイプがあります。私はここで何が欠けていますか?
「厳密なSQLモード」 – 1000111
「収益」が「VARCHAR」列の場合はデータベースがひどく設計されていると思います数値の列、たとえば'DECIMAL'。 – Andreas
[更新ステートメントでキャストを使用すると[mysqlエラー1292]の潜在的な複製](http://stackoverflow.com/q/21142273/5221149)。 – Andreas