2017-01-17 4 views
0

Ich bekomme immer die Aggregatgruppe nach Klausel Fehler auf die folgende Abfrage. Ich bin neu in SQL und kann es nicht richtig herausfinden. Ich bekomme doppelte Datensätze aufgrund der JDEppsin Tabelle und eine distinktive Klausel wird es auch nicht tun.SQL-Server-Gruppe nach Klausel Fehler

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 

Ich googeln über eine virtuelle Tabelle Gruppe mit es das ist, was ich habe kommen mit, aber ich nicht nur wissen, wie ich selbst verbinden bin gelehrt so versuchen, es

+0

Die Spaltenliste ist in der Auswahlliste ungültig, da sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. – ydoow

+0

Bitte geben Sie die Beispielausgabe der aktuellen Abfrage an. – Serge

+0

Der Fehler sagt Ihnen genau, was das Problem ist. Jede Spalte in SELECT, die keine Aggregatfunktion (SUM(), AVG() usw.) ist, muss in der GROUP BY-Klausel enthalten sein. Sie haben 12 Spalten, die keine Aggregatfunktion und keine einzelne Aggregatfunktion in SELECT sind. Sie müssen ein Buch oder Online-Tutorial zu grundlegenden SQL finden. –

Antwort

1

herauszufinden Wann immer Wenn Sie eine GROUP-Klausel verwenden, müssen alle nicht aggregierten Werte (nicht SUM, COUNT, AVG usw.) in Ihrer SELECT-Anweisung in Ihrer Gruppe nach Anweisung vorkommen. Versuchen Sie:

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 

Mit dieser sagte, wenn Sie sollten Sie nicht zur Gruppe brauchen nicht einen Gesamtwert haben. Ich würde SELECT DISTINCT stattdessen verwenden, wenn Sie versuchen, Duplikate zu entfernen. Wenn Sie nicht sind, dann entfernen Sie einfach die Gruppe durch.

+0

Ich kann distinct verwenden wie es Fehler mit Der Text Datentyp kann nicht ausgewählt werden als DISTINCT, weil es nicht vergleichbar ist. – SGR4eva

+0

Entschuldigung, ich wusste nicht, dass Sie den Text-Datentyp verwenden. Wenn möglich, würde ich es durch varchar (max) ersetzen, da der Textdatentyp veraltet ist, aber ich habe eine Spalte in meiner Datenbank, die ein Textdatentyp ist, und die Unfähigkeit, sie zu ändern, verstehe ich, wie schwierig das sein kann. –