View Full Version : SQL Syntax Fehler
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>
Moin,
ich glaube hinter Menge ist das Komma zuvile.
mfg
DKSPROFI
Moin,
also wenn ich das Komma bei Menge entferne markiert er mir die darauffolgende Klammer als Fehler.
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
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
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
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 !! :)
Nur so als Nachfrage:
Warum immer Sum(int(Menge)) statt einfach Sum(Menge)?