Ошибка SQL недопустима в списке выбора, поскольку она не содержится ни в статистической функции, ни в предложении GROUP BY - PullRequest
1 голос
/ 24 августа 2011

Вот мой запрос, созданный с помощью инструмента SAP Query:

SELECT DISTINCT 
   T1.CardCode, 
   T1.CardName, 
   T1.Phone1, 
   T1.GroupCode, 
   T1.Territory,
   T2.Street, 
   T2.Block, 
   T2.City, 
   T2.ZipCode, 
   T2.County, 
   T2.State, 
   T2.Country,
   count(distinct(T3.DocEntry)) as NumberOfInvoices,
   sum(distinct(T4.GTotal)) as InvoiceTotal
FROM 
    [ASAP].[dbo].[OCRD] as T1
    INNER JOIN  [ASAP].[dbo].[CRD1] as T2 ON T1.CardCode = T2.CardCode
    INNER JOIN  [ASAP].[dbo].[OINV] as T3 on T1.CardCode = T3.CardCode
    INNER JOIN  [ASAP].[dbo].[INV1] as T4 on T3.DocEntry = T4.DocEntry
WHERE 
    T1.Territory = [%0] 
    AND T3.DocDate >= [%1] 
    AND T3.DocDate <= [%2] 
GROUP BY 
    T1.CardCode,
    T1.CardName, 
    T1.Phone1, 
    T1.GroupCode,
    T1.Territory,
    T2.Street,
    T2.Block, 
    T2.City, 
    T2.ZipCode, 
    T2.County, 
    T2.State, 
    T2.Country

Это ошибка, которую я получаю - вы можете ясно видеть, что у меня есть поле в группе. По:

  • [Microsoft] [собственный клиент SQL] [SQL Server] Столбец «ASAP.dbo.OCRD.Territory» недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
  • [Microsoft] [Собственный клиент SQL] [SQL Server] Инструкция 'Serv

Пожалуйста, сообщите

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Удалить Distinct.Вы уже группируете, так что вам это не нужно.Не уверен, исправит ли это вашу ошибку или нет.

Я также очень подозреваю, что вы не хотите, чтобы distinct находилось внутри count() или sum().Конечно, вы хотите сложить все суммы счетов, а не только те, которые отличаются?При текущем синтаксисе, если у вас есть два разных счета с одинаковой суммой, один будет пропущен.

РЕДАКТИРОВАНИЕ : если вы уже передаете в Территорияпользователь, почему вам нужно выбрать это в запросе?Просто добавьте его обратно в пользовательский интерфейс после факта или выполните:

SELECT ..., [%0] AS Territory, ...

вместо использования поля.

0 голосов
/ 24 августа 2011

Я не получаю эту ошибку с кодом, который вы разместили, вы уверены, что то, что отправляется, соответствует тому, что вы опубликовали.Я говорю, что, поскольку ошибка относится к «ASAP.dbo.OCRD.Territory», которого нет в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...