Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Markere ugens og månedens sidste kurs

10 views
Skip to first unread message

Peter [5260]

unread,
Apr 18, 2012, 9:47:33 AM4/18/12
to
Jeg har en tabel tbKurs med kolonnerne (KursID, AktieID, Dato, Kurs, EoW, EoM).
EoW og EoM skal udfyldes med 'J', hvis den pågældende record er hhv. ugens eller månedens sidste.
Der kan være huller i data'ene ved fri- og helligdage, f.eks. er onsdag eller torsdag nogle gange ugens sidste dag!
Hvis f.eks. påsken falder sidst på en måned, kan månedens sidste kurs sagtens være d. 24. i måneden.
Jeg tænker mig en update á la følgende pseudokode for EoW-kolonnen, når AktieID er sat til 99:

UPDATE tbKurs
SET EoW = 'J'
WHERE
IsDate(SELECT TOP 1 FROM tbKurs AS k2
WHERE k2.AktieID = 99 AND DATEDIFF(k2.Dato, tbKurs.Dato) > 0
ORDER BY AktieID, Dato ASC)

...men det virker jo ikke :-(

Nogle, der har en god ide?

Ref: MS Access 2010, classic ASP.

På forhånd tak
Peter

Benny Andersen

unread,
Apr 19, 2012, 5:05:37 AM4/19/12
to
Forstår ikke det med AKktieID=99 andet end der vælges at opdatere på
den delmængde - men skal den så ikke også med øverste where?
Så vidt jeg forstår konkluderes der på sidste dag i ugen/måneden ud
fra eksisterende poster. Det er ren funktionalitet med den grad af
korrekthed som datafangsten besidder. At en given dato er sidste
hverdag i ugen/måneden er en realitet som men kan lave en funktion der
returnerer (omend den ikke er triviel mht. påske)

3 fejl springer i øjnene:

* select top 1 dato
*DateDiff("d",k2.Dato, tbKurs.Dato)=0
* Så vidt jeg kan se skal der også begrænses til samme uge, når EoW
sættes - altså datepart("ww",k2.Dato)=datepart("ww", tbKurs.Dato) -
tilsvarende "m" som første argument til datepart når EoM sættes.


Peter [5260]

unread,
Apr 19, 2012, 7:26:57 AM4/19/12
to
Tak for svar, Benny!
At jeg sætter AktieID=99 betyder bare, at jeg vil opdatere tabellen for een aktie ad gangen, f.eks. alle registreringer for Danske Bank.
Mit oprindelige SQL-statement var pseudokodeagtigt og dermed ikke syntaktisk korrekt - det erkender jeg! Det er måske nemmere at forklare med nogle data...
Givet følgende dataindhold (Dato;Kurs) i et par rækker:

To 26/1-12; 640,00
Fr 27/1-12; 642,50
Ma 30/1-12; 641,00
On 01/2-12; 643,00

Tirdag d. 31/1-12 er jo rettelig den sidste dag i januar, men her er aktien ikke omsat (=der er ingen række for denne dato). Derfor skal EoM-kolonnen sættes til 'J' for mandag d. 30/1-12.
På samme måde skal fredag d. 27/1-12 have EoW = 'J'.
UPDATE'n skal altså reagere på den sidste registrerede kurs for hhv. uge og måned, og med mine kompetencer udi SQL er *det* ikke trivielt...

JHB

unread,
Apr 20, 2012, 7:51:59 AM4/20/12
to

>"Peter [5260]" <aktiean...@gmail.com> skrev i en meddelelse news:1552148.40.1334834817865.JavaMail.geo-discussion-forums@ynee23...
Hej Peter,
du kan gøre det ved at oprette 2 sæt opdateringer á 2 forespørgsler for at opdatere pr. mdr og pr. uge.

Her kommer først de 2 forespørgsler for opdatering vedr. mdr.
1. forespørgsel - kald den f.eks. Mdropdate
SELECT DISTINCT Max([tbKurs].Dato) AS MaksOfDato
FROM [tbKurs]
GROUP BY Year([Dato]) & Month([dato]);

2. forespørgsel
UPDATE DISTINCTROW [tbKurs] INNER JOIN Mdropdate ON [tbKurs].Dato = Mdropdate.MaksOfDato SET [tbKurs].EoM = "J"
WHERE ([tbKurs].AktieID=99);


Her kommer de 2 forespørgsler for opdatering vedr. uge.
1. forespørgsel - kald den f.eks. Ugeopdate
SELECT DISTINCT Format([Dato],"ww/yyyy",2,2) AS Udtryk1, Max([tbKurs].Dato) AS MaksOfDato
FROM [tbKurs]
GROUP BY Format([Dato],"ww/yyyy",2,2)
ORDER BY Max([tbKurs].Dato);

2. forespørgsel
UPDATE DISTINCTROW [tbKurs] INNER JOIN Ugeopdate ON [tbKurs].Dato = Ugeopdate.MaksOfDato SET [tbKurs].EoW = "J"
WHERE ([tbKurs].AktieID=99);

Mvh
Jørn



Peter [5260]

unread,
Apr 23, 2012, 5:16:59 AM4/23/12
to
> Hej Peter,
> du kan gøre det ved at oprette 2 sæt opdateringer á 2 forespørgsler for at opdatere pr. mdr og pr. uge.
>
> Mvh
> Jørn

Hej Jørn,

Fantastisk, tusind tak!

Mvh
Peter

JHB

unread,
Apr 23, 2012, 5:30:03 AM4/23/12
to


>Hej Jørn,

>Fantastisk, tusind tak!

>Mvh
>Peter

Velbekom

Mvh
Jørn
0 new messages