Avatar billede pongobear Nybegynder
09. juli 2008 - 14:45 Der er 7 kommentarer

Query til at vise dato hvor salg var maksimum for hver forretning

Hej

Jeg har et tabel, som indeholder følgende:

DATO  FORRETNING  SALG

Nu ønsker jeg en query, der viser for hver afdeling, den dato, hvor salg var maksimum, samt hvad denne maksimum værdi er. Foreksempel:

DAT0  FORRETNING  SALG
01-01-2008  Kiosk1  1.000.000
04-04-2007  Kiosk2  1.204.203

Osv...

ITumpen
Avatar billede gnoname Praktikant
09. juli 2008 - 15:33 #1
select dato, forretning, sale
from  tabelnavn  tab1
where  salg = (
  select max(salg)
  from  tabelnavn  tab2
  where  tab2.forretning = tab1.forretning)


Det kan jo så godt give flere forekomster hvis der er flere dage med det maksimale salgstal ...
Avatar billede pongobear Nybegynder
09. juli 2008 - 16:39 #2
Jeg har prøvet følgende (fletnavne er ændret):

SELECT TABEL_Daysales_2.Dato, TABEL_Daysales_2.Afdeling, TABEL_Daysales_2.FaktiskOmsaetningDag
FROM TABEL_Daysales_2 tab1
where FaktiskOmsaetningDag = (select max(FaktiskOmsaetningDag)
from TABEL_Daysales_2 tab2
where tab2.FaktiskOmsaetningDag=tab1.FaktiskOmsaetningDag)

Men det virker ikke. Hvad gør jeg forkert?
Avatar billede mugs Novice
09. juli 2008 - 17:12 #3
gnoname's SQL fungerer upåklageligt. Jeg har afprøvet den. Hvilken fejl får du? Kan evt. sende min testdb.
Avatar billede gnoname Praktikant
10. juli 2008 - 00:02 #4
SELECT t1.Dato,
      t1.Afdeling,
      t1.FaktiskOmsaetningDag
FROM  TABEL_Daysales_2 t1
where  t1.FaktiskOmsaetningDag = (select max(t2.FaktiskOmsaetningDag)
                                  from  TABEL_Daysales_2 t2
                                  where  t2.Afdeling = t1.Afdeling)
Avatar billede pongobear Nybegynder
10. juli 2008 - 08:42 #5
Jeg har også lige prøvet den nye kode. Access går i selvsving med CPA på max!

Jeg forstår ikke hvorfor der benyttes t1 og t2? Jeg har jo kun én tabel, nemlig TABEL_Daysales_2

ITumpen
Avatar billede pongobear Nybegynder
10. juli 2008 - 08:51 #6
Måske findes en anden kode, der deler processen op. Min PC kan bare ikke køre gnoname's forespørgsel! :-)

ITumpen
Avatar billede gnoname Praktikant
11. juli 2008 - 19:31 #7
t1 og t2 er blot prefix, der fortæller hvilken instans af tabellen man taler om. Det er nødvendigt når man, som i dette tilfælde, refererer til den samme tabel to gange. simpelthen for at bestemme hvilken instans man taler om.

Det vil ligeledes være nødvendigt når man refererer til et felt/kolonne navn, der optræder i flere tabeller, når de tilgås med et enkelt select statement (join).

Hvis ovenstående statement ikke virker, så er det måske fordi du har mange millioner records i din tabel.

Hvis der kun er nogle tusinde forekomster, så burde det kun tage nogle hundrededele af et sekund. Ellers bør du måske overveje at benytte en rigtig database.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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