我在使用select语句
时无法返回正确的信息表:
name1 | name2 | amount
------ | ------ | --------
Fred | Fred | 10
Bob | Fred | 15
Sam | Sam | 100
这是我的查询
SELECT
CASE WHEN name1 <> name2 THEN name2
ELSE name1 END as name,
SUM(amount) as amount
FROM table
GROUP BY???
我希望看到结果:
name | amount
----- | ------
Fred | 25
Sam | 100
我尝试过使用group by并收到错误,说这不是GROUP BY表达式。如果我不使用组,则会收到错误,而不是单组组功能。这种查询是否可行?
答案 0 :(得分:0)
GROUP BY子句必须评估与select子句相同的内容。这样做:
SELECT
CASE WHEN name1 <> name2 THEN name2 ELSE name1 END as calc_name,
SUM(amount) as amount
FROM table
GROUP BY CASE WHEN name1 <> name2 THEN name2 ELSE name1 END
此外,name
是保留关键字,因此我稍微修改了该别名。
答案 1 :(得分:0)
尝试
SELECT ename,SUM(amount) amount FROM (
SELECT
CASE WHEN name1 <> name2 THEN name2
ELSE name1 END as ename,
amount
FROM table)
GROUP BY ename