2013-10-07 2 views
1

я пытаюсь выполнить следующий запрос, который подсчитывает количество врачей с рефералами пациентов в течение последних 6 месяцев:Oracle SQL не группа экспрессии при подсчете

SELECT 
    count(local_doc.providerno) NumberofReferals, 
    LOCAL_DOC.FULLNAME FULLNAME, 
    LOCAL_DOC.TELNUMBER TELNUMBER, 
    LOCAL_DOC.STREET STREET, 
    LOCAL_DOC.SUBURB SUBURB, 
    LOCAL_DOC.STATE STATE, 
    LOCAL_DOC.POSTCODE POSTCODE, 
    LOCAL_DOC.PROVIDERNO 
FROM 
    LOCAL_DOC, 
    PATIENT 
WHERE 
    PATIENT.PROVIDERNO = LOCAL_DOC.PROVIDERNO AND PATIENT.REFERALDATE <= sysdate AND PATIENT.REFERALDATE >= ADD_MONTHS(sysdate, -6) 
    group by local_doc.providerno; 

я продолжаю получать

ORA-00979: not a GROUP BY expression 
00979. 00000 - "not a GROUP BY expression" 
*Cause:  
*Action: 
Error at Line: 3 Column: 5 

и не знаю, как обойти это. Как я могу это сделать?

ответ

3

Dear, group By Clause ask a user to specify all Select Columns in Group By Clause as well except select columns with aggregated functions.

Look in my Group by Clause i have specify all columns in Select except local_doc.providerno because it is using Aggregated function COUNT

Для лучшего понимания, пожалуйста, обратитесь к этому link

SELECT 
    count(local_doc.providerno) NumberofReferals, 
    LOCAL_DOC.FULLNAME FULLNAME, 
    LOCAL_DOC.TELNUMBER TELNUMBER, 
    LOCAL_DOC.STREET STREET, 
    LOCAL_DOC.SUBURB SUBURB, 
    LOCAL_DOC.STATE STATE, 
    LOCAL_DOC.POSTCODE POSTCODE, 
    LOCAL_DOC.PROVIDERNO 
FROM 
    LOCAL_DOC, 
    PATIENT 
WHERE 
    PATIENT.PROVIDERNO = LOCAL_DOC.PROVIDERNO AND PATIENT.REFERALDATE <= sysdate AND PATIENT.REFERALDATE >= ADD_MONTHS(sysdate, -6) 
GROUP BY 
    LOCAL_DOC.FULLNAME , 
    LOCAL_DOC.TELNUMBER , 
    LOCAL_DOC.STREET , 
    LOCAL_DOC.SUBURB , 
    LOCAL_DOC.STATE , 
    LOCAL_DOC.POSTCODE , 
    LOCAL_DOC.PROVIDERNO 
+0

Я попытался сделать это, и оракул дает следующее сообщение об ошибке: 'ORA-00933 ВЭ: команда SQL не правильно закончился 00933. 00000 -«команда SQL не должным образом завершена» * Причина: * Действие: Ошибка в строке: 15 Столбец: 33' – Pindo

+2

@Pindo Извините, псевдоним удален из предложения group by, пожалуйста, проверьте сейчас, спасибо –

0

добавить

GROUP BY 
    LOCAL_DOC.FULLNAME , 
    LOCAL_DOC.TELNUMBER , 
    LOCAL_DOC.STREET , 
    LOCAL_DOC.SUBURB , 
    LOCAL_DOC.STATE , 
    LOCAL_DOC.POSTCODE , 
    LOCAL_DOC.PROVIDERNO 

Большинство DBS кроме MySql потребует от вас группы на остальных выбранных столбцов

0

в вы должны знать, какие столбцы могут иметь повторяющееся значение в нем, строки и затем добавить его в свой group by запрос является:

SELECT 
count(local_doc.providerno) NumberofReferals, 
LOCAL_DOC.FULLNAME FULLNAME, 
LOCAL_DOC.TELNUMBER TELNUMBER, 
LOCAL_DOC.STREET STREET, 
LOCAL_DOC.SUBURB SUBURB, 
LOCAL_DOC.STATE STATE, 
LOCAL_DOC.POSTCODE POSTCODE, 
LOCAL_DOC.PROVIDERNO 
FROM 
LOCAL_DOC, 
PATIENT 
WHERE 
PATIENT.PROVIDERNO = LOCAL_DOC.PROVIDERNO AND PATIENT.REFERALDATE <= sysdate AND PATIENT.REFERALDATE >= ADD_MONTHS(sysdate, -6) 
group by 
LOCAL_DOC.FULLNAME, 
LOCAL_DOC.TELNUMBER, 
LOCAL_DOC.STREET, 
LOCAL_DOC.SUBURB, 
LOCAL_DOC.STATE, 
LOCAL_DOC.POSTCODE, 
LOCAL_DOC.PROVIDERNO;