2017-01-17 4 views
0

Я продолжаю получать ошибку агрегатной группы по запросу в следующем запросе. Я новичок в SQL и не могу понять. Я продолжаю получать повторяющиеся записи из-за таблицы JDEppsin, и отдельное предложение тоже этого не сделает.sql server group by clause error

SELECT 
     JDEWorkOrderIn_LastImport.WorkOrderNumber, 
     JDEWorkOrderIn_LastImport.Quantity, 
     JDEWorkOrderIn_LastImport.LineNumber, 
     JDEWorkOrderIn_LastImport.SKU, 
     JDEWorkOrderIn_LastImport.SKUDesc1, 
     JDEWorkOrderIn_LastImport.SKUDesc2, 
     arc_JDEPPSIn.PalletSheet, 
     arc_JDEPPSIn.PalletConfigDesc, 
     arc_JDEPPSIn.LabelAlcVol, 
     arc_JDEPPSIn.CartonInkjetCode, 
     arc_JDEPPSIn.SpecialInstructions, 
     JDEWorkOrderIn_LastImport.WAWR02 
     FROM [WBPC_MES_Integration].[dbo].[arc_JDEPPSIn] 
join [WBPC_MES_Integration].[dbo].[JDEWorkOrderIn_LastImport] on arc_JDEPPSIn.WorkOrderNumber = JDEWorkOrderIn_LastImport.WorkOrderNumber 
where JDEWorkOrderIn_LastImport.startdate between getdate()-7 and getdate()+5 
group by arc_JDEPPSIn.workordernumber 

Я гугл об использовании виртуальной таблицы для группы это это то, что я придумал, но я просто не знаю, как присоединиться, я самоучка, таким образом пытаясь понять это

+0

Список столбцов недействителен в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – ydoow

+0

Просьба предоставить образец вывода текущего запроса. – Serge

+0

Ошибка сообщает вам, в чем проблема. Каждый столбец в SELECT, который не является агрегированной функцией (SUM(), AVG() и т. Д.), Должен быть в предложении GROUP BY. У вас есть 12 столбцов, которые не являются агрегатной функцией, а не одной совокупной функцией в SELECT. Вам нужно найти книгу или онлайн-учебник по базовому SQL. –

ответ

1

Всякий раз вы используете предложение GROUP, все неагрегатные значения (не SUM, COUNT, AVG и т. д.) в вашем операторе SELECT должны появляться в вашей группе по инструкции. Попробуйте добавить:

GROUP BY 
JDEWorkOrderIn_LastImport.WorkOrderNumber, 
JDEWorkOrderIn_LastImport.Quantity, 
JDEWorkOrderIn_LastImport.LineNumber, 
JDEWorkOrderIn_LastImport.SKU, 
JDEWorkOrderIn_LastImport.SKUDesc1, 
JDEWorkOrderIn_LastImport.SKUDesc2, 
arc_JDEPPSIn.PalletSheet, 
arc_JDEPPSIn.PalletConfigDesc, 
arc_JDEPPSIn.LabelAlcVol, 
arc_JDEPPSIn.CartonInkjetCode, 
arc_JDEPPSIn.SpecialInstructions, 
JDEWorkOrderIn_LastImport.WAWR02 

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

+0

, я могу использовать различные ошибки, так как это не так. Тип текстовых данных не может быть выбран как DISTINCT, потому что это не сопоставимо. – SGR4eva

+0

Извиняюсь, я не понимал, что вы используете текстовый тип данных. Если возможно, я заменил бы его varchar (max), поскольку тип текстовых данных устарел, но имея один столбец в моей базе данных, который является текстовым типом данных и невозможностью его изменить, я понимаю, насколько это сложно. –