【发布时间】:2011-09-30 08:37:23
【问题描述】:
我有这个查询:
SELECT B.BILL_BALANCE,
B.PRIME_UID,
home.IDENT,
PRESENT.ACC_LOGIN,
PRESENT.ACCOUNT_NAME2,
eq .ACCESS_NO AS PHONE,
adres.DISP_STREET_NAME,
B.BILL_DT
FROM addresses adres ,
BILL_HISTORY B
LEFT JOIN eq eq ON eq.ACCOUNT_NO = B.ACCOUNT_NO
JOIN sec PRESENT ON B.ACCOUNT_NO = PRESENT.ACCOUNT_NO
JOIN sec_text home ON home.ACCOUNT_NO = B.ACCOUNT_NO
WHERE eq.STATUS_CD = 'CU'
AND (B.BILL_TP_CD='CB'
OR B.BILL_TP_CD='FB')
AND (PRESENT.bill_addr_UID=adres.PRIME_UID
OR PRESENT.COMPANY_REG_ADDR_UID=adres.PRIME_UID)
AND B.BILL_PAID_DT IS NULL
AND B.BILL_DT >= to_date('2011-07-01')
AND B.BILL_DT <= to_date('2011-07-02')
AND rownum <=1000
GROUP BY B.PRIME_UID,
B.BILL_BALANCE,
home.IDENT,
PRESENT.ACC_LOGIN,
PRESENT.ACCOUNT_NAME2,
eq .ACCESS_NO,
adres.DISP_STREET_NAME,
B.BILL_DT
我需要按 B.PRIME_UID 进行“分组”,之后我遇到了这个错误:
[code] => 979 [message] => ORA-00979: not a GROUP BY expression [offset] => 8
我将所有列添加到“分组依据”并且它有效。
此查询仅适用于“rownum”。当我尝试删除“rownum”时 - 接近数据太长..超过 50 分钟..
如何在不使用 rowcount 的情况下重写 sql?
谢谢。
表格中的近似数据超过100 000。
更新*
“解释计划”不起作用。
Array
(
[error] => 1
[error text] => not found
[sql] => EXPLAIN PLAN FOR
SELECT B.BILL_BALANCE,B.PRIME_UID,home.IDENT,PRESENT.ACC_LOGIN,PRESENT.ACCOUNT_NAME2,eq .ACCESS_NO as PHONE,adres.DISP_STREET_NAME,B.BILL_DT
FROM addresses adres ,BILL_HISTORY B
LEFT JOIN eq eq ON eq.ACCOUNT_NO = B.ACCOUNT_NO
JOIN sec PRESENT
ON B.ACCOUNT_NO = PRESENT.ACCOUNT_NO
JOIN sec_text home
ON home.ACCOUNT_NO = B.ACCOUNT_NO
WHERE
eq.STATUS_CD = 'CU' AND
(B.BILL_TP_CD='CB' OR B.BILL_TP_CD='FB')
AND (PRESENT.bill_addr_UID=adres.PRIME_UID OR PRESENT.COMPANY_REG_ADDR_UID=adres.PRIME_UID)
AND B.BILL_PAID_DT IS NULL
AND B.BILL_DT >= to_date('2011-07-01')
AND B.BILL_DT <= to_date('2011-07-02')
AND rownum <=10
GROUP BY B.PRIME_UID,B.BILL_BALANCE,home.IDENT,PRESENT.ACC_LOGIN,PRESENT.ACCOUNT_NAME2,eq .ACCESS_NO,adres.DISP_STREET_NAME,B.BILL_DT
)
【问题讨论】:
-
您预计的执行计划是什么样的?把
EXPLAIN PLAN FOR放在你的SQL语句前面。 -
我更新了我的问题。“解释计划”不起作用。
-
与您的 DBA 讨论将 EXPLAIN PLAN 表添加到您的模式,该错误与没有计划表有关。此外,他们还应该能够帮助您完成计划,因此您可以了解从哪里开始查找查询中的问题。
标签: sql oracle group-by ora-00979