Seite 1 von 1

ADS 12 Distinct mit Fehler?

Verfasst: Mo, 09. Mai 2016 15:08
von UliTs
Hallo allerseits,

in der ADS-Hilfe gibt es dieses Beispiel mit der neuen DISTINCT-Möglichkeit.

Code: Alles auswählen

SELECT 
  GROUP_CONCAT( DISTINCT language ORDER BY language ) 
FROM employees 
Ich habe die DISTINCT-Möglichkeit heute erstmals eingesetzt.
Aber dabei ich auf ein Problem gestoßen: wenn die Ergebnisliste aus keinem Datensatz besteht, kommt es bei Einsatz von "Order By" zu einem Fehler:

Code: Alles auswählen

SELECT 
  GROUP_CONCAT( DISTINCT language ORDER BY language ) 
FROM employees 
WHERE language='1234'
Ich vermute, es handelt sich um einen Fehler im ADS 12, da dieser Fehler ohne Angabe von "Order By" nicht kommt.

Uli

Re: ADS 12 Distinct mit Fehler?

Verfasst: Mo, 09. Mai 2016 15:44
von nightcrawler
Hallo Uli,
das kann ich mit dem Beispiel vom Forentreffen nicht nachvollziehen:

Code: Alles auswählen

SELECT e.branch, GROUP_CONCAT(DISTINCT trim(l.language) ORDER BY language SEPARATOR '; ' ) FROM employees e
  JOIN employee_languages el ON el.employeeid=e.id
  JOIN languages l ON el.languageid=l.id
  WHERE language='123'
GROUP BY 1

Re: ADS 12 Distinct mit Fehler?

Verfasst: Mo, 09. Mai 2016 16:57
von UliTs
Bei meinem obigen Beispiel kommt die Fehlermeldung

Code: Alles auswählen

poQuery: Error 7200:  AQE Error:  State = HY000;   NativeError = 5068;  [SAP][Advantage SQL Engine][ASA] Error 5068:  There is no current record.

Re: ADS 12 Distinct mit Fehler?

Verfasst: Mo, 09. Mai 2016 17:15
von nightcrawler
Uli,
ohne ein GROUP BY kannst Du gar keine Aggregat Funktion verwenden. Wie sieht die Tabelle aus und was willst Du genau daraus abfragen?

Re: ADS 12 Distinct mit Fehler?

Verfasst: Mo, 09. Mai 2016 17:32
von UliTs
Hallo Joachim,

ich glaube, dass Du dich irrst :D .
Ohne "Group by" gibt es als Ergebnis halt nur einen Datensatz. Ich möchte für einen Artikel alle Kommissionsnummern (KommNr), die diesen Artikel in ihrer Stückliste benutzen, in einem Feld aufführen. Und zwar eigentlich nach KommNr sortiert (darauf verzichte ich zur Zeit wegen des Problems).
Also:

Code: Alles auswählen

select Group_Concat( DISTINCT trim(cast(KommNr as SQL_Char)) /*MIT order by KommNr KOMMT Fehler*/ ) KommNrn
from Stuecklisten
inner join Komissionen  on Kommissionen.Kom1Id=Stuecklisten.Kom1Id
where Stuecklisten.ATId=1234
Wenn der Artikel in keiner Stückliste vorkommt, kommt es zu diesem Fehler bei Einsatz von "order by".

Uli

Re: ADS 12 Distinct mit Fehler?

Verfasst: Mo, 09. Mai 2016 21:33
von nightcrawler
Dann versuche mal, die ATId mit in das Select zu packen:

Code: Alles auswählen

select Stuecklisten.ATId, Group_Concat( DISTINCT trim(cast(KommNr as SQL_Char)) /*MIT order by KommNr KOMMT Fehler*/ ) KommNrn
from Stuecklisten
inner join Komissionen  on Kommissionen.Kom1Id=Stuecklisten.Kom1Id
--where Stuecklisten.ATId=1234
GROUP BY 1
HAVING ATId=1234