SQL: Door case-statement worden meerdere regels getoond

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • JohanLi
  • Registratie: April 2022
  • Laatst online: 10-02-2023
Ik heb van één item drie inkoopregels. Ik wil de inkoopregels opsplitsen tussen langer en korter dan drie maanden. Dat doe ik door onderstaande Case:

"case when ONTVANGSTDATUM < (CURDATE + 90) then AANTAL else '0' end"
en:
"case when ONTVANGSTDATUM > (CURDATE + 90) then AANTAL else '0' end"


Afbeeldingslocatie: https://tweakers.net/i/AauJlgmajl_A2rmkHt5aDl7OCYo=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/hL11wphbpR7zpf9Zsp6GpOaw.png?f=user_large

Nu zou ik graag op één regel de waarde boven 3M zien en onder 3M, dus bijelkaar opgeteld.

Wanneer ik dit met group by probeer, dan kan ik dat niet zonder de ontvangstdatum ook in group by te zetten, waardoor het weer meerdere regels worden.

Heeft iemand de oplossing? Bij voorbaat dank.

[ Voor 5% gewijzigd door JohanLi op 21-11-2022 10:16 ]

Beste antwoord (via JohanLi op 21-11-2022 15:57)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt van je huidige query een subquery maken:

SQL:
1
2
3
4
5
select OLPRDC, sum(`PO<3M`), sum(`PO>3M`)
from (
  // huidige query hier
) as x
group by OLPRDC


Iets in die richting. Iets anders: ik zou geen veldnamen als 'PO<3m` gebruiken (dat is een UI concern). Noem ze PO_short en PO_long ofzo. Vermeld volgende keer ook even welk RDBMS je gebruikt; ik ben hier even van MySQl uitgegaan.

[ Voor 21% gewijzigd door RobIII op 21-11-2022 10:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt van je huidige query een subquery maken:

SQL:
1
2
3
4
5
select OLPRDC, sum(`PO<3M`), sum(`PO>3M`)
from (
  // huidige query hier
) as x
group by OLPRDC


Iets in die richting. Iets anders: ik zou geen veldnamen als 'PO<3m` gebruiken (dat is een UI concern). Noem ze PO_short en PO_long ofzo. Vermeld volgende keer ook even welk RDBMS je gebruikt; ik ben hier even van MySQl uitgegaan.

[ Voor 21% gewijzigd door RobIII op 21-11-2022 10:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • JohanLi
  • Registratie: April 2022
  • Laatst online: 10-02-2023
RobIII schreef op maandag 21 november 2022 @ 10:30:
Je kunt van je huidige query een subquery maken:

SQL:
1
2
3
4
5
select OLPRDC, sum(`PO<3M`), sum(`PO>3M`)
from (
  // huidige query hier
) as x
group by OLPRDC


Iets in die richting. Iets anders: ik zou geen veldnamen als 'PO<3m` gebruiken (dat is een UI concern). Noem ze PO_short en PO_long ofzo. Vermeld volgende keer ook even welk RDBMS je gebruikt; ik ben hier even van MySQl uitgegaan.
Top, dank je, daar kom ik een heel eind mee!