webForumDet fria alternativet

Helt olika resultat (datum jmf tal)

4 svar · 314 visningar · startad av wazid

wazidMedlem sedan maj 2001156 inlägg
#1

Hej

Jag förstår inte varför jag får olika utfall på följande två frågor i Access.

SELECT top 1 Test.artikelnr, Max(Test.datum) AS Maxfördatum, Test.saldo
FROM Test
GROUP BY Test.artikelnr, Test.saldo
HAVING (((Max(Test.datum))<#2/2/2004#))
ORDER BY Max(Test.datum) DESC;
SELECT  top 1 MVXADTA001_MITTRA.MTITNO, Max(MVXADTA001_MITTRA.MTTRDT) AS MaxförMTTRDT, MVXADTA001_MITTRA.MTNSTQ
FROM MVXADTA001_MITTRA
GROUP BY MVXADTA001_MITTRA.MTITNO, MVXADTA001_MITTRA.MTNSTQ
HAVING (((Max(MVXADTA001_MITTRA.MTTRDT))<20040701))
ORDER BY Max(MVXADTA001_MITTRA.MTTRDT) DESC;

Det är så att den första frågan fungera. Den levererar ut aktuellt saldo för alla artikelnr i tabellen.
Medan fråga två endast levererar ut en rad i resultatet (alltså bara för ett artikelnr)
Det som skiljer är att i den första är datumet i ett datumfält och i den andra frågan är datumet ett tal.

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Även om du har top 1 så kommer access att hämta alla poster där Max(MVXADTA001_MITTRA.MTTRDT) är lika.

wazidMedlem sedan maj 2001156 inlägg
#3

Jaha, det förklarar en del!
Dock kvarstår mitt problem, hur jag ska få ut en rad per artikelnr....

LarsGMedlem sedan dec. 200012 464 inlägg
#4
SELECT artikelnr, datum, saldo
FROM Test as q
where datum in (select max(datum)
from test
where q.artikelnr = test.artikelnr
and datum <#2/2/2004#)
order by datum DESC
wazidMedlem sedan maj 2001156 inlägg
#5

Perfekt!

Tack LarsG

Nu ska jag bara putsa till det lite.
Av någon anledning får jag ut dubbelt med rader men det fixades till med en distinct.

Dock kvarstår ett problem.
Om en artikeln förekommer flera gånger på samma datum, så kommer alla raderna med. Jag vill bara ha med den senaste raden.

SELECT DISTINCT MTNSTQ, MTITNO, MTTRDT, MTWHLO, MTRGTM
FROM         dbo.MITTRA q
WHERE     (MTTRDT IN
                          (SELECT     MAX(MTTRDT)
                            FROM          dbo.MITTRA
                            WHERE      q.MTITNO = dbo.MITTRA.MTITNO AND q.MTWHLO = dbo.MITTRA.MTWHLO AND MTTRDT < 20040701))
ORDER BY MTITNO, MTTRDT DESC, MTRGTM DESC, MTWHLO

Jag skulle då vilja sortera ut efter fältet MTRGTM, som innehåller klockslaget. Kan man få med det i samma SELECT?

MVH

David

132 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)