不是group by 的表达式

[复制链接]
查看11 | 回复8 | 2014-12-10 06:00:16 | 显示全部楼层 |阅读模式
本帖最后由 sdwe9091 于 2013-10-9 16:49 编辑
select (select so.org_name from sta_org so where so.org_no = stat.org_no) as org,
sum(stat.agmt_num) as ctrt_num_e,
sum(stat.loan_bal) as loan_bal_e,
stat.proj_id
from (select sta.proj_id,sta.cycle_term,substr(sta.org_no,1,2) org_no,sta.agmt_num,sta.loan_bal from sta_proj_srep_stat sta) stat
where 1 = 1
and stat.proj_id = '70'
and stat.cycle_term = '4'
group by stat.org_no, stat.proj_id;
一直提示不是group by的表达式 给第一行换成stat.org_no也没事。
或者给stat这个表直接换成sta_proj_srep_stat也没事
否则就会报不是group by的表达式,小红叉出现在from后面的substr()
请教下大家,谢谢


回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
select里的东西要不是聚集函数、常数
要不就是group by列表中的
回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
语句改为如下即可! 测试一下是否完全正确。

select so.org_name,

sta.*
from
(select substr(sta.org_no,1,2) org_no,

sum(sta.agmt_num) agmt_num,

sum(sta.loan_bal) loan_bal,

sta.proj_id
from sta_proj_srep_stat sta
where stat.proj_id = '70'
and stat.cycle_term = '4'
group by substr(stat.org_no, 1, 2), stat.proj_id)sta,
sta_org so
where sta.org_no = so.org_no(+);



回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
〇〇 发表于 2013-10-9 17:00
select里的东西要不是聚集函数、常数
要不就是group by列表中的

请问为啥加了这个substr就会出现这个错误?实在搞不明白了。。
回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
bell6248 发表于 2013-10-9 17:12
语句改为如下即可! 测试一下是否完全正确。

select so.org_name,

恩,用关联是可以的。但是不明白为啥那样做就不行了。。
回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
写法太繁琐,改成bell的,清晰明了,也容易排错.
回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
sdwe9091 发表于 2013-10-9 17:13
请问为啥加了这个substr就会出现这个错误?实在搞不明白了。。

如果不按照bell的SQL,只是在你的SQL基础上解决问题的话。。这样写:
select (select so.org_name from sta_org so where so.org_no = stat.org_no) as org,
sum(stat.agmt_num) as ctrt_num_e,
sum(stat.loan_bal) as loan_bal_e,
stat.proj_id
from (select sta.proj_id,sta.cycle_term,substr(sta.org_no,1,2) org_no,sta.agmt_num,sta.loan_bal from sta_proj_srep_stat sta group by substr(sta.org_no,1,2) ) stat
where 1 = 1
and stat.proj_id = '70'
and stat.cycle_term = '4'
group by stat.org_no, stat.proj_id;
回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
BUG:
dingjun123@ORADB> SELECT (SELECT so.org_name FROM sta_org so WHERE so.org_no = stat.org_no) AS org,
2 SUM(stat.agmt_num) AS ctrt_num_e, SUM(stat.loan_bal) AS loan_bal_e,
3 stat.proj_id
4FROM (SELECT sta.proj_id, sta.cycle_term, substr(sta.org_no, 1, 2) org_no,
5
sta.agmt_num, sta.loan_bal
6 FROM sta_proj_srep_stat sta) stat
7WHERE 1 = 1
8AND stat.proj_id = '70'
9AND stat.cycle_term = '4'
10GROUP BY stat.org_no, stat.proj_id;
no rows selected
Elapsed: 00:00:00.01
回复

使用道具 举报

千问 | 2014-12-10 06:00:16 | 显示全部楼层
sdwe9091 发表于 2013-10-9 17:13
请问为啥加了这个substr就会出现这个错误?实在搞不明白了。。

X
SUBSTR(X,1,1)
AAAA
ABBA
BBBB
类似这样的,你让oracle情何以堪?所以出错是必然的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行