PDA

View Full Version : SQL zum wahnsinnig werden



Seiten : [1] 2

KingofKning
06-03-14, 14:09
Hi *all,habe hier ein SQL Statement welches auf Fehler läuft.

(V5R4)Spalte *N oder Ausdruck in SELECT-Liste nicht gültig.

ELECT VKL, FIRMA, KND, ABKZ FROM ARUBA_MSVC/PLANZ WHERE (DATUM >= '20140101') AND (DATUM <= '20140131') OR (DATUM >= '20140201')AND (DATUM <= '20140228') GROUP BY VKL, Firma, knd, abkz

Wenn ich das mit dem Datum rausnehme läuft er. Sprich am group liegt es nicht.Was jemand was ihm fehlt?GG

malzusrex
06-03-14, 14:53
Versuche das ganze doch mal mit BETWEEN


SELECT VKL, FIRMA, KND, ABKZ
FROM ARUBA_MSVC/PLANZ
WHERE DATUM between '20140101' AND '20140131'
OR DATUM between '20140201' AND '20140228'
GROUP BY VKL, Firma, knd, abkz


Gruß
Ronald

Fuerchau
06-03-14, 15:32
Prüfe mal die Definition, ob das Feld "DATUM" auch Char ist, meist sind solche Felder numerisch und Vergleiche gehören dann nicht in Hochkomma.

KingofKning
06-03-14, 17:09
Versuche das ganze doch mal mit BETWEEN


SELECT VKL, FIRMA, KND, ABKZ
FROM ARUBA_MSVC/PLANZ
WHERE DATUM between '20140101' AND '20140131'
OR DATUM between '20140201' AND '20140228'
GROUP BY VKL, Firma, knd, abkz


Gruß
Ronald
Das kann ich leider nicht, da es ja aus Aruba kommt und da habe ich keinen Einfluß drauf

Habe es jetzt doch mal probiert, between bringt auch nichts

KingofKning
06-03-14, 17:10
Hallo, das Feld ist char, habe es auch als 273 gecastet bringt aber auch nichts.

Anbei mal das create view

CREATE VIEW PLANZ AS SELECT ALL T01.STMOAN AS JM, T01.STKTO AS VKL,
T01.STTENR AS KND, DEC(1, 2, 0) AS FIRMA, DEC(0, 2, 0) AS ABKZ, CAST
(SUM(CASE WHEN STPLIS = 1 THEN STWT02 ELSE 0 END) AS DEC(10, 3)) PL
AN, CAST(SUM(CASE WHEN STPLIS = 2 THEN STWT02 ELSE 0 END) AS DEC(10,
3)) IST, CAST( (SUBSTR(DIGITS(T01.STMOAN), 1, 4) || SUBSTR(DIGITS(T
01.STMOAN), 5, 2) || '01') AS CHAR(8) CCSID 273) AS DATUM, SUBSTR(DI
GITS(T01.STMOAN), 1, 4) AS JAHR, SUBSTR(DIGITS(T01.STMOAN), 5, 2) AS
MONAT FROM STA01PF T01, ADR01PF T02 WHERE STFA = 1 AND
STFAKT = 1 AND STMOAN > 201300 AND STVDST = 88 AND STSAAR <> '1' AND
ADABKZ = 0 AND ADKTO = STTENR AND ADSTS = 0 AND ADFA = 1 GROUP BY S
TMOAN, STKTO, STTENR


Hatte das | auch durch concat ersetzt, bringt aber nichts.
GG

KingofKning
06-03-14, 18:42
Ich habe jetzt das Datum mal als richtiges Datum umgesetzt, ändert aber nichts.

GG

KM
07-03-14, 06:56
Hallo,

also ich hab jetzt mal einen ähnlichen SQL nachgebaut (dieselbe Struktur wie oben genannt). Und bei mir läuft das ohne Probleme. Wir haben auch V5R4.

Gruß,
KM

Fuerchau
07-03-14, 07:22
Das "|"-Zeichen ist leider CCSID abhängig.
Daher muss der Job korrekt in der CCSID zum Erstellzeitpunkt der View laufen, wahrscheinlich 273.
Mach mal einen CHGJOB CCSID(273) und nur einen "select * from PLANZ".

Alternativ versuche mal, den Select der View selber anzugeben:

select ...
from (select der View) planz

und prüfe die Fehler ggf. auch im Joblog.

KingofKning
07-03-14, 13:15
Das schöne ist, ein query macht alles, auch Gruppenwechsel etc. Nur leider kann mann aus einem Query mit Gruppenwechsel kein SQL machen. Die groups läßt der bei der Umwandlung weg. Warum auch immer.
Die Aruba hat jetzt ein Würkaround gefunden das bei der Abfrage die nur zum Auffächern der Daten benutzt wurde die where Klausel wegfällt. Es werden zwar dann mehr Daten vom Client gefiltert aber bei jetzt 12.000 Datensätzen geht das noch. Pro Jahr kommen weitere 12.000 dazu ich hoffe bis es kritisch wird bin ich bei V9R3 ;-)
Ich werde das ganze mal in einem anderern Kontext testen, evtl. mal bei Holger ich hoffe der ist über V5R4 hinweg.GG

Pikachu
07-03-14, 13:54
Holles Pub1 (http://pub1.de/) läuft derzeit noch unter V5R3 ...


Ich werde das ganze mal in einem anderern Kontext testen, evtl. mal bei Holger ich hoffe der ist über V5R4 hinweg.GG