select t.*,
(select b.etorgname from pub_et_def b where C.Marketorgid = b.etorgid) bb,
(select c.countername from rtl_counter_def c where D.Counterid = c.Counterid) dd
from
(SELECT
C.Marketorgid aa,
D.Counterid cc
FROM
RTL_SA_DOC C,
RTL_SA_DTL D
WHERE
C.RTLSAID=D.RTLSAID and
to_char(C.ts,'yyyymmdd') >= 20040904 and to_char(C.ts,'yyyymmdd') <= 20040906
GROUP BY C.Marketorgid,D.Counterid ) T ;
(select b.etorgname from pub_et_def b where C.Marketorgid = b.etorgid) bb,
(select c.countername from rtl_counter_def c where D.Counterid = c.Counterid) dd
from
(SELECT
C.Marketorgid aa,
D.Counterid cc
FROM
RTL_SA_DOC C,
RTL_SA_DTL D
WHERE
C.RTLSAID=D.RTLSAID and
to_char(C.ts,'yyyymmdd') >= 20040904 and to_char(C.ts,'yyyymmdd') <= 20040906
GROUP BY C.Marketorgid,D.Counterid ) T ;
(select b.etorgname from pub_et_def b where C.Marketorgid = b.etorgid) bb,
(select c.countername from rtl_counter_def c where D.Counterid = c.Counterid) dd,
(SELECT
SUM(DECODE(a.RTLSATYPE,1,b.REALMONEY,0,-b.REALMONEY)) ff
FROM
RTL_SA_DOC a,
RTL_SA_DTL b
WHERE
a.RTLSAID=b.RTLSAID and
to_char(a.ts,'yyyymmdd') = to_char(t.ts,'yyyymmdd') AND
A.Marketorgid = t.Marketorgid AND
B.Counterid = t.Counterid
) EE
from
(SELECT
C.Marketorgid aa,
D.Counterid cc,
trunc(c.ts) ts
FROM
RTL_SA_DOC C,
RTL_SA_DTL D
WHERE
C.RTLSAID=D.RTLSAID and
to_char(C.ts,'yyyymmdd') >= 20040904 and to_char(C.ts,'yyyymmdd') <= 20040906
GROUP BY C.Marketorgid,D.Counterid,trunc(c.ts) ) T
按这个基本的格式去做..就不会出问题的..
select col_name1,col_name2,聚集函数() from table_name ...group by col_name1,col_name2;聚集函数前面有几个列就要在group by后面出现几列,否则出现not a group by 表达式
二楼的写法你可以试一下,只要得到结果一样为什么不能用呢