【发布时间】:2019-12-04 19:03:45
【问题描述】:
这是我的数据的样子
title value
------------
t1 v1
t2 v2
t3 v3
现在我希望 t1 和 t2 被推断为相同的值 t12。所以,我愿意:
SELECT
CASE
WHEN title = 't1' OR title = 't2'
THEN 't12'
ELSE title
END AS inferred_title,
COUNT(value)
FROM
my_table
GROUP BY
inferred_title;
我预计输出是:
inferred title values
-----------------------
t12 2
t3 1
但我最终得到的是:
inferred title values
--------------------------
t12 1
t12 1
t3 1
如何让它按照我想要的方式运行?我不想要重复的行。
【问题讨论】:
-
你的 DBMS 是什么?它为 Postgresql 和 MySQL 8 带来了你想要的结果。
-
Group by 不能使用别名,由于操作顺序。 Group by 也必须有 case 语句;或者您必须使用子查询/ cte 来获取案例的结果及其在聚合之前的别名。只有 order by 可以使用别名
-
@BarbarosÖzhan Redshift,所以是 Postgresql
-
您的案例即使在 ver. 8.4 中也适用于 Postgresql,但对于 Red-shift,我不能说什么,似乎没有
-
@Barbaros 我知道在 group by 中使用表达式别名不起作用。但是它显示为 1 的 o/p 是什么,好像它不起作用,为什么它会给 OP 带来错误
标签: sql case amazon-redshift