sql - Oracle - 通过创建重复行进行分组

标签 sql oracle group-by alias

我有一个如下所示的查询:

select nvl(trim(a.code), 'Blanks') as Ward, count(b.apcasekey) as UNSP,     count(c.apcasekey) as GRAPH,
count(d.apcasekey) as "ANI/PIG", 
(count(b.apcasekey) +  count(c.apcasekey) + count(d.apcasekey)) as "TOTAL   ACTIVE", 
count(a.apcasekey) as "TOTAL OPEN" from (etc...)

group by a.code
order by Ward

我将 nvl(trim(a.code), 'Blanks') 作为 Ward 的原因是有时 a.code 是一个空白字符串,有时它是一个

问题是,当我使用 Group By 语句时,我无法使用 Ward 或收到错误

Ward: Invalid Identifier

我只能使用 a.code,因此我得到 2 行 'Blanks',如下所示

1   Blanks  7    0   0  7   7
2   Blanks  23   1   1  25  30
3   W01     75   4   0  79  91
4   W02     62   1   0  63  72
5   W03     140  2   0  142 162
6   W04     6    1   0  7   7
7   W05     46   0   1  47  48
8   W06     322  46  1  369 425
9   W07     91   0   1  92  108
10  W08     93   2   0  95  104
11  W09     28   1   0  29  30
12  W10     25   0   0  25  28

我需要的是将带有 'Blanks' 的行合并为 1 行。帮助不大?

谢谢。

最佳答案

您不能在GROUP BY中使用别名,但可以使用构建值的表达式:

GROUP BY nvl(trim(a.code), 'Blanks')

关于sql - Oracle - 通过创建重复行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877341/

相关文章:

java - 尝试绑定(bind) NaN 时溢出

jquery - Oracle 权限矩阵

sql - ORA-00907 : missing right parenthesis (While Creating the Table)

mysql - 如何使用具有不同值的 COUNT(*) 函数?

R data.table 按两列分组和迭代

SQL 将字符串转换为日期格式 112

mysql - 选择同名的最后一行

mysql - 如何合并两个不同表中的数据?

sql - Hive 中的窗口函数

MySQL 计算一列的唯一性,而其他列在 Group By 中具有单个值