Toon posts:

[SQL] 1002 EDT NGC Not a GROUP BY colum

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,

Ik help me vader een beetje met zijn boekhoud programma.
Dit programma werkt met een database.

Mijn vader wou nu een query die berekent hoeveel omzet een bepaalt product heeft.
Ik ken wel een beetje sql, omdat ik met php met MYsql werk maar het lijkt alsof dit toch ietsjes anders is. Hopelijk kan iemand me helpen.

mijn query:
code:
1
2
3
4
SELECT FACTOPDRACHTREGEL.CDARTIKEL, SUM(FACTOPDRACHTREGEL.FACTBEDRAGEXCL), FACTOPDRACHTREGEL.CDSTATUS
FROM SYSADM.FACTOPDRACHTREGEL FACTOPDRACHTREGEL, SYSADM.FACTUREEROPDRACHT FACTUREEROPDRACHT
WHERE (FACTOPDRACHTREGEL.CDARTIKEL<>'Is Null')
GROUP BY FACTOPDRACHTREGEL.CDARTIKEL


CDARTIKEL = artikel nummer
de fout: 1002 EDT NGC Not a GROUP BY colum

alvast bedankt.

[ Voor 3% gewijzigd door Verwijderd op 27-07-2004 12:54 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Basic SQL: alle kolommen die niet in een GROUP BY staan moeten in een aggregate functie zitten.

Professionele website nodig?


Verwijderd

Topicstarter
wat bedoel je precies aggregate functie ? Is daar ergens documentatie voor? Wat doe ik fout?

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
code:
1
2
3
4
SELECT SUM(FACTOPDRACHTREGEL.CDARTIKEL), SUM(FACTOPDRACHTREGEL.FACTBEDRAGEXCL), FACTOPDRACHTREGEL.CDSTATUS
FROM SYSADM.FACTOPDRACHTREGEL FACTOPDRACHTREGEL, SYSADM.FACTUREEROPDRACHT FACTUREEROPDRACHT
WHERE (FACTOPDRACHTREGEL.CDARTIKEL<>'Is Null')
GROUP BY FACTOPDRACHTREGEL.CDARTIKEL

doet het qua sql goed, aggregate is functies zoals count / sum etc... Gewoon even tutorial opzoeken.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Professionele website nodig?


Verwijderd

Topicstarter
Ja maar ik gebruik toch sum ?
Alleen met het artikel nummer doe ik niks. Ik wil een resultaat als bijvoorbeeld:

|artikel nummer:|totaal omzet: |
|15 |550,60 |

sorry ik zal het eerst even lezen |:(

[ Voor 10% gewijzigd door Verwijderd op 27-07-2004 13:08 ]


Verwijderd

Bzzzt.

code:
1
FACTOPDRACHTREGEL.CDSTATUS


Je selecteert 3 kolommen, waarvan 1 een aggregate functie (dus 2 niet aggregate kolommen), en je groupt maar op 1.

En dit zal ook niet werken denk ik

code:
1
WHERE (FACTOPDRACHTREGEL.CDARTIKEL<>'Is Null')


Misschien bedoel je

code:
1
 WHERE FACTOPDRACHTREGEL.CDARTIKEL IS NOT NULL


Overigens zou het rustiger voor de ogen geweest zijn als je kolommen en tabellen in kleine letters had benoemd... :/

[ Voor 55% gewijzigd door Verwijderd op 27-07-2004 13:13 ]


Verwijderd

Topicstarter
Dat doet doet helaas microsoft query :(
Maar het is bijna gelukt :D

query:
code:
1
2
3
4
5
SELECT FACTOPDRACHTREGEL.CDARTIKEL, Sum(FACTOPDRACHTREGEL.FACTBEDRAGEXCL)
FROM SYSADM.FACTOPDRACHTREGEL FACTOPDRACHTREGEL
WHERE (FACTOPDRACHTREGEL.CDARTIKEL Is Not Null)
GROUP BY FACTOPDRACHTREGEL.CDARTIKEL
ORDER BY FACTOPDRACHTREGEL.CDARTIKEL


Alleen 1 dingetje, ik heb weleens gelezen dat ORDER BY niet goed werkt in combinatie met GROUP BY klopt dit?

Want het werkt nu deels wel maar niet helemaal naar mijn wens want hij sorteert het artikel nummer op eerste karakter.
Hij doet het nu zo:
dus
105
117
12
15
150
152
155

Maar ik wil het zo:
12
15
105
117
150
152
155

Is er mogelijkheid om het naar wens te doen?

Verwijderd

Ja. Je hebt de kolom van het type VARCHAR gemaakt.

VARCHAR is bedoeld voor tekst en niet voor getallen.

Als je er een getalstype van maakt klopt het sorteren wel.

[ Voor 4% gewijzigd door Verwijderd op 27-07-2004 13:41 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 27 juli 2004 @ 13:08:
Ja maar ik gebruik toch sum ?
Alleen met het artikel nummer doe ik niks. Ik wil een resultaat als bijvoorbeeld:

|artikel nummer:|totaal omzet: |
|15 |550,60 |

sorry ik zal het eerst even lezen |:(
Even nadenken, stel je hebt de volgende data:
NaamBedragHoeveelheid
Piet15
Piet26
Klaas37
Klaas48


Stel nu de volgende query:
SQL:
1
select Naam, sum(Bedrag), Hoeveelheid from table group by Naam;

Dan is duidelijk wat er in de eerste 2 kolommen staat, maar wat moet er in de laatste kolom? Hij moet door het groupen op Naam wel degelijk 5 en 6 samenvoegen en 7 en 8, maar hoe? Bij bedrag geef je aan dat er een optelling gebeurt, maar hij mag bij Hoeveelheid niet zomaar kiezen. Vandaar: zodra je groupt moet je alle niet-gegroupte kolommen met een aggregerende functie als avg, sum, max of min gebruiken.

Professionele website nodig?


Verwijderd

Topicstarter
Ik ben er helemaal uit, alleen die sortering nog, hoe kan ik dan het datatype van een colum veranderen naar INT ? Want dit is geen mysql he!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 27 juli 2004 @ 15:17:
Ik ben er helemaal uit, alleen die sortering nog, hoe kan ik dan het datatype van een colum veranderen naar INT ? Want dit is geen mysql he!
CAST(MyExpression AS int)

Professionele website nodig?

Pagina: 1