我知道这是一个愚蠢的问题,可能已经在某个地方得到了解答,如果有,请引导我链接。
我想打印一个未包含在group by子句中的列。 Oracle表示它应该包含在group by表达式中,但我希望value来自同一行,其中选择了另一列的max()值。
例如:如果我有一个包含以下列的表:
Employee_Name,Action_code,Action_Name
我想查看每个员工的最大action_code的操作名称,我也不能在条件中使用子查询。
我想要这样的事情:
select employee_name, max(action_code), action_name --for max code
from emp_table
group by employee_name
select语句中的 action_name 导致问题,如果我在group by子句中添加action_name,那么它将显示每个员工的每个操作的操作名称,这将使查询无意义。
感谢您的支持
答案 0 :(得分:1)
您可以使用keep .. last
pattern:
select employee_name,
max(action_code) as action_code,
max(action_name) keep (dense_rank last order by action_code) as action_name
from emp_table
group by employee_name
文档在姐妹函数first()
下更全面地解释了这一点。