我有一个如下所示的查询:
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/