Gelijke bedragen in query

Status
Niet open voor verdere reacties.

andre123

Nieuwe gebruiker
Lid geworden
12 jun 2013
Berichten
3
Ik heb een Query gemaakt waarbij ik o.a de crediteuren nummers laat zien en de gefactureerde bedragen. Ik wil nu uit deze lijst weergegeven hebben de crediteurnummers met gelijke factuur bedragen. M.a.w. Een snelle controle om uit een groot bestand dubbel gefactureerde bedragen te controleren. Hoe kan ik de query aanpassen zodat ik alleen de mogelijke dubbele boekingen toon. Mvgr André
 
Voeg een HAVING COUNT toe aan je query:
[sql]
SELECT kolom1, kolom2, kolom3
FROM tabel
HAVING COUNT(*) > 1
GROUP BY kolom1, kolom2, kolom3
[/sql]
Tardis
 
Laatst bewerkt door een moderator:
Reactie Tardis

Tardis ik heb geprobeerd je sugggestie te verwerken. De query is:
[SQL]select
gbkmut.crdnr,
cicmpy.cmp_name as NaamCrediteur,
gbkmut.bkjrcode as Boekjaar,
gbkmut.reknr as Grootboekrekening,
gbkmut.periode,
gbkmut.dagbknr as Dagboek,
gbkmut.oms25 as Omschrijving,
gbkmut.bdr_hfl as Bedrag
from
gbkmut
join cicmpy on gbkmut.crdnr = cicmpy.crdnr
where bkjrcode = 2013
and periode = 5
and reknr = 1500000
and dagbknr < 900
order by crdnr, bdr_hfl
[/sql]
Een fractie van een enorme lijst is onderstaand resultaaat.
Ik wil alleen tonen crdr 1208 want op het zelfde crdnr twee exact dezelfde bedragen.
[table="width: 500, class: dotted"][tr][td]crdnr[/td][td]NaamCrediteur[/td][td]Boekjaar[/td][td]Grootboekrekening[/td][td]periode[/td][td]Dagboek[/td][td]Omschrijving[/td][td]Bedrag[/td][/tr]
[tr][td]1208[/td][td]Firma X[/td][td]2013[/td][td]1500000[/td][td]5[/td][td]700[/td][td]Criem 3 daagse module[/td][td]-1100[/td][/tr]
[tr][td]1208[/td][td]Firma X[/td][td]2013[/td][td]1500000[/td][td]5[/td][td]700[/td][td]Criem 3 daagse module[/td][td]-1100[/td][/tr]
[tr][td]1359[/td][td]Firma Y[/td][td]2013[/td][td]1500000[/td][td]5[/td][td]700[/td][td]CV storing WW[/td][td]-292,7[/td][/tr]
[tr][td]1359[/td][td]Firma Y[/td][td]2013[/td][td]1500000[/td][td]5[/td][td]700[/td][td]Luchtbehandelingssysteem[/td][td]-244,42[/td][/tr]
[tr][td]1359[/td][td]Firma Y[/td][td]2013[/td][td]1500000[/td][td]5[/td][td]700[/td][td]Storing klimaat[/td][td]-83,49[/td][/tr]
[/table]
Hoe moet de Query exact aangepast worden?
 
Laatst bewerkt door een moderator:
1208 is in je voorbeeld een setje van twee dezelfde records, niet dezelfde bedragen.

Het hebben van dezelfde bedragen lijkt mij ook niet genoeg, bedragen zijn niet uniek dus je kunt aan het bedrag alleen niet bepalen of het een dubbel bedrag is, of twee keer stomtoevallig hetzelfde bedrag.

Dus de vraag is wat je precies probeert te bereiken.
 
PGviincent,
De query is een behoorlijk lange lijst. In deze lijst komt onder andere crediteur 1208 voor met twee gefactureerde bedragen van € 1.100. Je zegt terecht dat dit stom toevallig twee keer hetzelfde bedrag kan zijn, maar het is ook mogelijk dat een bepaalde dienst twee keer is gefactureeerd. Met andere woorden deze twee boekingen bij crediteur 1208 behoeven een extra fysieke controle. Het gaat er mij dus om die crediteuren te vinden met eenzelfde gefactureerd bedrag.
 
In dat geval zou ik de query opdelen in tenminste twee kleinere queries; een die ophaalt welke regels dubbele (zouden kunnen) zijn en een tweede die de rest van de informatie erbij haalt.
[SQL]
SELECT
gbkmut.crdnr,
gbkmut.bdr_hfl as Bedrag
FROM gbkmut
JOIN cicmpy on gbkmut.crdnr = cicmpy.crdnr
WHERE bkjrcode = 2013
AND periode = 5
AND reknr = 1500000
AND dagbknr < 900
GROUP BY crdnr,bdr_hfl
HAVING COUNT(*)>1
[/SQL]

Dat geeft alle dubbele combinaties van crediteurnr en bedrag, en die uitkomst kun je gebruiken om de rest van de data erbij te halen:

[SQL]
SELECT
gbkmut.crdnr,
cicmpy.cmp_name as NaamCrediteur,
gbkmut.bkjrcode as Boekjaar,
gbkmut.reknr as Grootboekrekening,
gbkmut.periode,
gbkmut.dagbknr as Dagboek,
gbkmut.oms25 as Omschrijving,
gbkmut.bdr_hfl as Bedrag
FROM gbkmut
JOIN cicmpy on gbkmut.crdnr = cicmpy.crdnr
WHERE
(crdnr, bdr_hfl)
IN
(
SELECT
gbkmut.crdnr,
gbkmut.bdr_hfl as Bedrag
FROM gbkmut
JOIN cicmpy on gbkmut.crdnr = cicmpy.crdnr
WHERE bkjrcode = 2013
AND periode = 5
AND reknr = 1500000
AND dagbknr < 900
GROUP BY crdnr,bdr_hfl
HAVING COUNT(*)>1
)
[/SQL]

En in de uitkomst daarvan moet je dan dus met de hand gaan kijken welke fout zijn en welke toeval.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan