oracle 中 GROUP BY 必须跟select中用到的所有字段?那么。。。

jackycode 2005-05-04 02:52:59
如果select中有许多字段,我只想GROUP BY一个字段那要怎么写啊?

SELECT
a.Date,
a.Class,
SUM(a.amount),
b.note,
b.Name
FROM
tablename1 a
LEFT OUTER JOIN tablename2 b ON a.ID = b.ID
GROUP BY a.Class
...全文
1675 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Paradise_heida 2005-05-06
  • 打赏
  • 举报
回复
group by后必须跟所有select 中没有参与计算的字段,这是对的。

也就是说,其他没有参与sum,max或min等的字段,如果要想查询出来就必须group by。
railgunman 2005-05-05
  • 打赏
  • 举报
回复
可以这样解决:先把要Group by的字段分组查询出来,然后作为一个结果集,再和表中的其他字段关联查询
beckhambobo 2005-05-05
  • 打赏
  • 举报
回复
sorry:

SELECT
a.Date,
a.Class,
SUM(a.amount) over(partition by a.class),
b.note,
b.Name
FROM
tablename1 a, tablename2 b where a.ID = b.ID(+)
beckhambobo 2005-05-05
  • 打赏
  • 举报
回复
SELECT
a.Date,
a.Class,
SUM(a.amount) over(partition by a.class),
b.note,
b.Name
FROM
tablename1 a, tablename2 b where a.ID = b.ID(+)
GROUP BY a.Class
北极海hein 2005-05-05
  • 打赏
  • 举报
回复
group by后必须跟所有select 中没有参与计算的字段
你可以用相关子查询实现你的结果:

SELECT
a.Date,
a.Class,
(select SUM(a.amount) from tablename1 c
where a.class=c.class
group by c.class) as amount,
b.note,
b.Name
FROM
tablename1 a
LEFT OUTER JOIN tablename2 b ON a.ID = b.ID
qwerttyy 2005-05-05
  • 打赏
  • 举报
回复
先GROUP BY一个字段,然后用UNION连接2个SELECT语句就可以得到你要的结果.
nicholasgunn 2005-05-05
  • 打赏
  • 举报
回复
group by 一个字段和所有字段结果有区别吗?
mayongzhi 2005-05-04
  • 打赏
  • 举报
回复
group by后必须跟所有select 中没有参与计算的字段
fangbintao 2005-05-04
  • 打赏
  • 举报
回复
oracle中必须加入所有的列出的字段

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧