Avatar billede madiedk Nybegynder
17. februar 2008 - 13:35 Der er 14 kommentarer og
1 løsning

kan ikke få group by month til at virke

SELECT id, dato, formue
FROM his
WHERE id = '300' AND dato in
(SELECT  MAX (dato) FROM his GROUP BY month(dato))

den skriver at den month er en ugyldig indikation. det er en oracle database

jeg vil nemlig gerne bare have beløbet for den største dato i hver måned.
Avatar billede arne_v Ekspert
17. februar 2008 - 16:34 #1
Du siger da eller at det er løsningen her http://www.eksperten.dk/spm/819666 ....
Avatar billede arne_v Ekspert
17. februar 2008 - 16:36 #2
MONTH(dato) skal nok være TO_CHAR(dato,'YYYY-MM')
Avatar billede madiedk Nybegynder
17. februar 2008 - 17:10 #3
ja det virkede også da jeg testede i access, men ikke når jeg kører det via vba på oracle
Avatar billede madiedk Nybegynder
17. februar 2008 - 17:13 #4
har ikke muliged for at teste nu, men vil TO_CHAR(dato,'YYYY-MM') gøre så der bliver sorteret på måned? altså vil:

SELECT id, dato, formue
FROM his
WHERE id = '300' AND dato in
(SELECT  MAX (dato) FROM his GROUP BY TO_CHAR(dato,'YYYY-MM')) så virke?
Avatar billede arne_v Ekspert
17. februar 2008 - 17:32 #5
Jeg er mere overrasket over at det virkede i Access. Jeg synes ikke ta det giver
mening at lave GROUP BY på noget der ikke er i SELECT listen. Og jeg tror heller
ikke at den WHERE spiller godt sammen med den sub select.
Avatar billede arne_v Ekspert
17. februar 2008 - 17:34 #6
SELECT id,TO_CHAR(dato,'YYYY-MM') ,MAX(formue)
FROM tabel
GROUP BY id,TO_CHAR(dato,'YYYY-MM')

eller

SELECT id,TO_CHAR(dato,'YYYY-MM') ,MAX(formue)
FROM tabel
WHERE id=300
GROUP BY id,TO_CHAR(dato,'YYYY-MM')

er stadigt mit bud
Avatar billede madiedk Nybegynder
17. februar 2008 - 19:17 #7
hvorfor er det max(formue) når det skal være den største dag pr måned?
og hvad er det der bliver lavet group by på som ikke er med i select listen?
Avatar billede arne_v Ekspert
17. februar 2008 - 19:25 #8
største dag = dag med største formue

eller mener du sidste dag i måneden ?
Avatar billede madiedk Nybegynder
17. februar 2008 - 19:36 #9
sidste dag i måneden, sorry hvis jeg udtrykker mig uklart
Avatar billede arne_v Ekspert
17. februar 2008 - 19:44 #10
så prøv:

SELECT id, dato, formue
FROM his h1
WHERE id = 300 AND dato =
(SELECT MAX(dato) FROM his h2 WHERE h2.id=h1.id AND TO_CHAR(h2.dato,'YYYY-MM') = TO_CHAR(h1.dato,'YYYY-MM'))
Avatar billede madiedk Nybegynder
19. februar 2008 - 15:31 #11
har arbejdet lidt videre med den her:

(tabelnavne er lige ændret)

men det undre mig at alt virker fint, bortset fra at den ikke tager måneden for den 3 og den 9. måned, men for alle de andre og jeg har tjekket at der eksisterr data for den 3 og 9 i tabellen


SELECT PORTEFOELJEHISTORIK.PORTEFOELJE, PORTEFOELJEHISTORIK.DATO, PORTEFOELJEHISTORIK.FORMUE FROM INV.PORTEFOELJEHISTORIK WHERE (PORTEFOELJEHISTORIK.PORTEFOELJE='" & afd & "') AND (PORTEFOELJEHISTORIK.DATO>{ts '2007-01-01 00:00:00'}) AND PORTEFOELJEHISTORIK.DATO IN (SELECT  MAX(PORTEFOELJEHISTORIK.DATO) FROM INV.PORTEFOELJEHISTORIK GROUP BY TO_CHAR(PORTEFOELJEHISTORIK.DATO,'MM-YYYY')) ORDER BY PORTEFOELJEHISTORIK.DATO
Avatar billede madiedk Nybegynder
19. februar 2008 - 15:35 #12
den tager faktisk heller ikke for den 6, så det er 3,6 og 9 måned den springer over? underligt
Avatar billede arne_v Ekspert
24. februar 2008 - 01:39 #13
Meget mystisk.
Avatar billede madiedk Nybegynder
24. februar 2008 - 13:50 #14
ja det sku underligt, har også fået andre til at kigge på det, ingen kan finde fejlen. men anyways, så fik jeg med inspiration fra din løsning arne v til at virke. så smid et svar så der point. og tak



SELECT id, dato, formue
FROM his h1
WHERE id = 300 AND dato =
(SELECT MAX(dato) FROM his h2 WHERE h2.id=h1.id AND TO_CHAR(h2.dato,'YYYY-MM') = TO_CHAR(h1.dato,'YYYY-MM'))
Avatar billede arne_v Ekspert
24. februar 2008 - 16:01 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester