0

2つのテーブルを結合し、CASEステートメントを使用してテーブルを更新しようとしています。
古いエラーコードが表示されます:1111グループ関数の使用が無効です。解決する方法について何かアイデアはありますか?

UPDATE table1 JOIN table2 ON (table1.ITEM = table2.ITEM)
SET table1.TURNOVERSCORE=CASE
WHEN ((COUNT(table2.ORDER_NUMBER))/12) < 1 AND table1.CAT = 'E' THEN .05
WHEN ((COUNT(table2.ORDER_NUMBER))/12) >= 1 AND ((COUNT(table2.ORDER_NUMBER))/12) < 4 AND table1.CAT = 'E' THEN .5
WHEN ((COUNT(table2.ORDER_NUMBER))/12) >= 4 AND table1.CAT = 'E' THEN 1
WHEN ((COUNT(table2.ORDER_NUMBER))/12) <= 5 AND table1.CAT != 'E' THEN .05
WHEN ((COUNT(table2.ORDER_NUMBER))/12) >= 6 AND ((COUNT(table2.ORDER_NUMBER))/12) < 11 AND table1.CAT != 'E' THEN .25
WHEN ((COUNT(table2.ORDER_NUMBER))/12) >= 11 AND ((COUNT(table2.ORDER_NUMBER))/12) < 21 AND table1.CAT != 'E' THEN .5
WHEN ((COUNT(table2.ORDER_NUMBER))/12) >= 21 AND table1.CAT != 'E' THEN 1 END
4

1 に答える 1

1

クロスジョイン製品を作成していると思いますが、更新を行う場合は許可されていないと思います。

たぶん、最初にテーブル2を集計してみてください。たとえば、次のようになります。

UPDATE table1 
JOIN (SELECT count(*) as cnt, item FROM table2 GROUP BY item) t2 
ON table1.item = t2.item

SET table1.TURNOVERSCORE=CASE
WHEN t2.cnt/12 < 1 AND table1.CAT = 'E' THEN .05
WHEN t2.cnt/12 >= 1 AND t2.cnt/12 < 4 AND table1.CAT = 'E' THEN .5
WHEN (t2.cnt/12) >= 4 AND table1.CAT = 'E' THEN 1
WHEN (t2.cnt/12) <= 5 AND table1.CAT != 'E' THEN .05
WHEN (t2.cnt/12) >= 6 AND (t2.cnt/12) < 11 AND table1.CAT != 'E' THEN .25
WHEN (t2.cnt/12) >= 11 AND (t2.cnt/12) < 21 AND table1.CAT != 'E' THEN .5
WHEN (t2.cnt/12) >= 21 AND table1.CAT != 'E' THEN 1 END
于 2012-10-11T21:18:54.260 に答える