как выражение недопустимо в моем простом запросе? - PullRequest
0 голосов
/ 01 мая 2019

Я новичок в SQL, создаю простой запрос из идентичного примера, но не уверен, почему 1 выражение недопустимо?

Я попробовал это утверждение:

SELECT      
    A.AccountId,
    A.Address1_City,
    A.Address1_Country,
    A.Address1_PostalCode,
    A.Address1_StateOrProvince,
    A.CreatedOn,
    A.EMailAddress1,
    A.mcs_ABN2,
    A.mcs_AdminContact,
    A.mcs_AdminContactName,
    A.mcs_AreyouinterestedinInternationalDevelopmen,
    A.mcs_BenefitsUtilised,
    A.mcs_BusinessNameOrganisationName,
    A.mcs_doyouprovideaccreditedtraining,
    A.mcs_doyouprovidenonaccreditedtraining,
    A.mcs_DoyouprovideservicesinanyNDISTrialSites,
    A.mcs_DoyouprovideservicestoChildrenYoungPeople,
    A.mcs_DummyRecord,
    A.mcs_EntityStatusCode,
    A.mcs_IndustryOperatingIn,
    A.mcs_IsStreetAddresssameasPostalAddress,
    A.mcs_MembershipNote,
    A.mcs_MultiStateDepartment,
    A.mcs_NotefromApplicant,
    A.mcs_NumberofEmployeesDec,
    A.mcs_OtherTradingNameOrganisationName,
    A.mcs_PartnerDisabilityServiceOrganisations,
    A.mcs_PrimaryProductsServicesToPromote,
    A.mcs_RevenueDisabServiceProvisionTotalAnnual,
    A.mcs_SageERPCustomerCode,
    A.mcs_SageErpExportFlag,
    A.ModifiedOn,
    A.Name,
    A.nds_Account_MembershipNumberCopy,
    A.nds_IsMember,
    A.nds_MainContact,
    A.nds_MainContactName,
    A.nds_MemberCategoryCopy,
    A.PrimaryContactId,
    A.Revenue,
    A.Revenue_Base,
    A.StatusCode,
    A.WebSiteURL
FROM
    account A
WHERE
    A.statuscode = 1
GROUP BY
    A.name

и получил эту ошибку:

ОШИБКА [42000] [Microsoft] [Драйвер ODBC SQL Server] [SQL Server] Столбец «account.AccountId» недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

1 Ответ

3 голосов
/ 01 мая 2019

Group By для агрегатных функций (Count, Sum, etc), поэтому, если вы используете group by, вам нужно сгруппировать по крайней мере по каждому столбцу, возвращаемому в выбранном SQL, иначе он не сможет выполнить агрегирование. Похоже, что вы просто хотите заказать по имени, поэтому, если вы замените

GROUP BY          A.name

с

ORDER BY A.name

это должно работать. Если вас не интересует порядок или агрегирование, просто полностью удалите эту часть запроса.

...