这是我在编写 SQL 查询时经常遇到的情况。我认为在 GROUP BY 表达式中编写整个列(例如长 case 表达式、具有长参数的求和函数)而不是别名会使查询更长且可读性较差。为什么 Oracle SQL 不允许我们在 GROUP BY 子句中使用列别名?这背后一定有一个重要的原因。
它不仅仅是 Oracle SQL,事实上我相信它符合 ANSI SQL 标准(尽管我没有这方面的参考)。原因是SELECT子句经过逻辑处理afterGROUP BY 子句,因此在 GROUP BY 完成时,别名尚不存在。
也许这个有点荒谬的例子有助于澄清问题和 SQL 正在避免的歧义:
SQL> select job as sal, sum(sal) as job
2 from scott.emp
3 group by job;
SAL JOB
--------- ----------
ANALYST 6000
CLERK 4150
MANAGER 8275
PRESIDENT 5000
SALESMAN 5600
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)