-2

私はテーブルkを持っています:

num2 | count
aa1  | 10
aa2  | 5
bb   | 2
bb   | 4
cc   | 80

そしてテーブル t と:

num1 | num2
a    | aa1
a    | aa2
" "  | bb
" "  | bb
" "  | cc

ここで、num1 の " " を num2 に置き換えながら、num1 ごとに MIN および MAX カウントを取得したいと思います (列 A の条件が満たされた場合、列 A の行を列 B の値で埋めます)。

num1 の " " を num2 に置き換える (動作):

SELECT (CASE
WHEN t.num1 = ' ' THEN TO_CHAR(k.num2)
ELSE t.num1
END) AS 'num1',
k.num2 AS 'num2',
k.count AS 'count'
--
FROM table1 AS k
--
LEFT JOIN table2 AS t
ON k.num2 = t.num2
--
WHERE k.count > 1
--
;

その結果:

num1 | num2 | count
a    | aa1  | 10
a    | aa2  | 5
bb   | bb   | 2
bb   | bb   | 4
cc   | cc   | 80

しかし、GROUP BY を使用してすべての num1 の MIN + MAX を取得しても、次のことはできません。

SELECT (CASE
WHEN t.num1 = ' ' THEN TO_CHAR(k.num2)
ELSE t.num1
END) AS 'num1',
MIN(k.count) AS 'count_MIN',
MAX(k.count) AS 'count_MAX'
--
FROM table1 AS k
--
LEFT JOIN table2 AS t
ON k.num2 = t.num2
--
WHERE k.count > 1
--
GROUP BY (CASE
WHEN t.num1 = ' ' THEN TO_CHAR(k.num2
ELSE t.num1
END)
--
;

結果は次のようになります。

num1 | count_MIN | count_MAX
a    | 5         | 10
bb   | 2         | 4
cc   | 80        | 80

しかし、上記のコードを実行すると、DBeaver でエラーが発生します。

SQL エラー [4200]: 有効な GROUP BY 式ではありません

?

4

3 に答える 3