我有表 k:
num2 | count
aa1 | 10
aa2 | 5
bb | 2
bb | 4
cc | 80
和表 t:
num1 | num2
a | aa1
a | aa2
" " | bb
" " | bb
" " | cc
现在我想获取每个 num1 的 MIN 和 MAX 计数,同时用 num2 替换 num1 中的“”(如果满足 A 列中的条件,则用 B 列的值填充 A 列中的行):
用 num2 替换 num1 中的“”(有效):
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 表达式
?