2 regels moeten er 1 worden

Status
Niet open voor verdere reacties.

DJ.Funny

Gebruiker
Lid geworden
17 jan 2006
Berichten
113
Beste Lezer,

Doe al veel met sql-statements maar wil wat verder gaan. Nu loop ik tegen het volgende probleem aan:

Ik wil uit de database van een Logistiek systeem wat met een progress database werkt twee waarden optellen uit verschillende kolommen. Nu krijg ik dit gedeeltelijk voor elkaar. Ik heb de volgende statement gemaakt:

Code:
SELECT "lb-182_0".cdprodukt as artikel, sum("lb-182_0".aantal) as Aantal
FROM DATA.PUB."lb-182" "lb-182_0"
WHERE ("lb-182_0".cdprodukt='11648')
Group by "lb-182_0".cdprodukt
UNION all
SELECT "lb-182_0".cdprodukt as artikel, Sum(aantbest*-1) as aantal
FROM DATA.PUB."lb-182" "lb-182_0", DATA.PUB."va-211" "va-211_0"
WHERE "lb-182_0".cdadmin = "va-211_0".cdadmin AND "lb-182_0".cdprodukt = "va-211_0".cdprodukt AND "lb-182_0".cdstandeenhd = "va-211_0".cdstandeenhd AND (("va-211_0".cdprodukt='11648') AND ("va-211_0".cdstatus='O') AND ("va-211_0".cdborder<>'I'))
GROUP BY "lb-182_0".cdprodukt

Dit geeft als resultaat:

ARTIKEL AANTAL
11648 78
11648 -2

Ik wil als resultaat:

ARTIKEL AANTAL
11648 76

Dit moet denk ik mogelijk zijn maar grrrrrrrrrrrrr :o ik kom er niet uit :confused:

Groeten Dirk
 
Laatst bewerkt:
Hmmmm jammer, had het idee dat dit mogelijk zou zijn :o, maar is al veel gelezen en geen reactie of antwoord.

Tijdens googlen heb ik het idee dat het mogelijk is, maar mij lukt het niet!

Ik laat de vraag nog even staan.
 
Weet niet of het werkt, maar iets als dit? En dan daar anders een group by op, ofzo?

with cte (
SELECT "lb-182_0".cdprodukt as artikel, sum("lb-182_0".aantal) as Aantal
FROM DATA.PUB."lb-182" "lb-182_0"
WHERE ("lb-182_0".cdprodukt='11648')
Group by "lb-182_0".cdprodukt
UNION all
SELECT "lb-182_0".cdprodukt as artikel, Sum(aantbest*-1) as aantal
FROM DATA.PUB."lb-182" "lb-182_0", DATA.PUB."va-211" "va-211_0"
WHERE "lb-182_0".cdadmin = "va-211_0".cdadmin AND "lb-182_0".cdprodukt = "va-211_0".cdprodukt AND "lb-182_0".cdstandeenhd = "va-211_0".cdstandeenhd AND (("va-211_0".cdprodukt='11648') AND ("va-211_0".cdstatus='O') AND ("va-211_0".cdborder<>'I'))
GROUP BY "lb-182_0".cdprodukt)
select *
from cte
 
Laatst bewerkt:
Hmmmmm werkt niet bij mij maar ik heb nu een mooie ingang om te googlen, heb het idee (alles zo lezende) dat dit de goede richting is!!

Alvast bedankt voor het meedenken!
 
Heb het met test tabellen uitgeprobeerd en dit zou moeten werken.

[SQL]with cte as (produkt, aantal)
(
select produkt, sum(aantal)
from tabelx.test1
group by produkt

union

select produkt, sum(aantal)
from tabelx.test2
group by produkt
)
select produkt, sum(aantal)
from cte
group by produkt[/SQL]

In jou geval zou dat dan zoiets als de onderstaande code moeten zijn.

[SQL]with cte as (artikel, aantal)
(
select "lb-182_0".cdprodukt as artikel, sum("lb-182_0".aantal) as aantal
from DATA.PUB."lb-182" "lb-182_0"
where "lb-182_0".cdprodukt = '11648'
group by "lb-182_0".cdprodukt

union

select "lb-182_0".cdprodukt as artikel, sum(aantbest*-1) as aantal
from DATA.PUB."lb-182" "lb-182_0", DATA.PUB."va-211" "va-211_0"
where "lb-182_0".cdadmin = "va-211_0".cdadmin and "lb-182_0".cdprodukt = "va-211_0".cdprodukt AND "lb-182_0".cdstandeenhd = "va-211_0".cdstandeenhd
AND (("va-211_0".cdprodukt='11648') AND ("va-211_0".cdstatus='O') AND ("va-211_0".cdborder<>'I'))
group by "lb-182_0".cdprodukt
)
select artikel, sum(aantal)
from cte
group by artikel[/SQL]
 
Beste VVANASPEREN,


Had zelf ook iets dergelijks in elkaar geknutseld. Maar helaas fout! :o

Krijg een foutmelding, wellicht zegt dit u iets?

fout.png

Het betreft touwens een Progress database wellicht helpt dit

Groeten Dirk
 
Jihaaaaaaa het is me gelukt!!!

VVANASPEREN bedankt voor het meedenken ik waardeer dat enorm!!

Dit was overigens de oplossing:

[SQL]SELECT artikel, sum(aantal) FROM (

SELECT "lb-182_0".cdprodukt as artikel, sum("lb-182_0".aantal) as Aantal
FROM DATA.PUB."lb-182" "lb-182_0"
Group by "lb-182_0".cdprodukt
UNION all
SELECT "lb-182_0".cdprodukt as artikel, Sum(aantbest*-1) as aantal
FROM DATA.PUB."lb-182" "lb-182_0", DATA.PUB."va-211" "va-211_0"
WHERE "lb-182_0".cdadmin = "va-211_0".cdadmin AND "lb-182_0".cdprodukt = "va-211_0".cdprodukt AND "lb-182_0".cdstandeenhd = "va-211_0".cdstandeenhd AND ("va-211_0".cdstatus='O') AND ("va-211_0".cdborder<>'I'))
GROUP BY "lb-182_0".cdprodukt

) as VOORRADEN

GROUP BY artikel
[/SQL]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan