PDA

View Full Version : SQL Syntax Fehler



pabloesco
27-05-21, 10:47
Hallo Forum,
ich habe folgenden SQL - Code und bekomme leider eine Fehlermeldung. SQL0104 Token <ende der="" anweisung=""> <ende der="" anweisung=""> ungültig wird mir angezeigt. Ich sehe persönlich nicht an welcher Stelle ein Syntax - Fehler vorhanden ist.


Erledigt
</ende></ende>

DKSPROFI
27-05-21, 11:17
Moin,

ich glaube hinter Menge ist das Komma zuvile.

mfg

DKSPROFI

pabloesco
27-05-21, 11:23
Moin,

also wenn ich das Komma bei Menge entferne markiert er mir die darauffolgende Klammer als Fehler.

Fuerchau
27-05-21, 11:23
Das Komma trennt den skalaren Subselect.
Allerdings fehlt bei Aggregaten das Group By und nach der Klammer der finale "select * from temp_result ".

Andreas_Prouza
27-05-21, 11:24
Du machst ein With temp_result as (...) greifst aber nicht auf temp_result zu.
Das könnte dann so aussehen:

with temp_result as (
SELECT
BMKONZ as NI,
BMIDEN as Artikel,
TZBEZ1 as Bezeichnung,
BMLIEF as Lieferant,
Count(BMLM) AS Paletten,
Sum(int(BMBMEN)) AS Menge,
(
select
case when sum(int(TPBMEN)) is NULL then 0 else sum(int(TPBMEN)) end
from
pbesttp
where
tpiden = bmiden
and tpttyp in ('E', 'U')
) as Transport
FROM PBESTLOL1
)
select * from temp_result

lg Andreas

Robi
27-05-21, 11:24
nee, da fehlt einfach was!

With aaa as ( ...... )

select * from aaa where ..... <---- das fehlt doch!

und im oberen teil mit sum( ...) fehlt evtl ein group by ... oder zumindest ein where

Fuerchau
27-05-21, 11:29
Desweiteren ist auch dieses Konstrukt nicht erforderlich:

case when sum(int(TPBMEN)) is NULL then 0 else sum(int(TPBMEN)) end

Man kann Aggregate und Einzelwerte nicht einfach mischen.
Hier reicht ein

coalesce(sum(int(TPBMEN)), 0)



with temp_result as (
SELECT
BMKONZ as NI,
BMIDEN as Artikel,
TZBEZ1 as Bezeichnung,
BMLIEF as Lieferant,
Count(BMLM) AS Paletten,
Sum(int(BMBMEN)) AS Menge,
(
select
coalesce(sum(int(TPBMEN)), 0)
from
pbesttp
where
tpiden = bmiden
and tpttyp in ('E', 'U')
) as Transport
FROM PBESTLOL1
group by BMKONZ , BMIDEN , TZBEZ1 , BMLIEF
)select * from
temp_result

pabloesco
27-05-21, 11:34
Ja ihr habt Recht es fehlt ein Teil. Der SQL - Code ist eig. deutlich größer. Ich wollte nun erstmal stückchenweise den Code zum laufen kriegen. Danke für den Hinweiß mit dem Select. Der Code funktioniert nun.

Danke für die Erklärung @Fuerchau !! :)

Fuerchau
27-05-21, 11:42
Nur so als Nachfrage:
Warum immer Sum(int(Menge)) statt einfach Sum(Menge)?