Avatar billede s0mmer Nybegynder
06. maj 2010 - 15:00 Der er 7 kommentarer og
1 løsning

Self join samt lidt mere

Hej eksperter,

Jeg har en tabel med flg. attributter: id, tal og dato.

Nu ønsker jeg at have alle med dato = '31-03-2010' joinet med alle hvor dato = '28-02-2010' hvor id = id.

Derudover kunne jeg godt tænke mig en ny kolonne som giver mig tal fra den første dato subtraheret med tal for den anden dato.

- kan i hjælpe?
Avatar billede arne_v Ekspert
06. maj 2010 - 16:45 #1
proev med:

SELECT t1.id,t1.tal,t2.id,t2.tal,t1.tal-t2.tal AS taldif
FROM tabel t1,tabel t2
WHERE t1.id=t2.id AND t1.dato='31-03-2010' AND t2.dato = '28-02-2010'
Avatar billede s0mmer Nybegynder
11. maj 2010 - 10:20 #2
arne_v > Dette er min kode:

SELECT    t1.depid, t1.DatoMdAfkast, t1.KarakterSamlet AS Expr1, t2.depid, t2.DatoMdAfkast, t2.KarakterSamlet, t1.KarakterSamlet - t2.KarakterSamlet AS taldif
FROM        vInvestHistory AS t1 CROSS JOIN
                      vInvestHistory AS t2
WHERE    (t1.depid = t2.depid) AND (t1.DatoMdAfkast = '31-03-2010') AND (t2.DatoMdAfkast = '28-02-2010')

Dog får jeg i SQL server management studio express følgende fejl:

"The conversion of a char type to a datetime data type resulted in an out-of-range datetime value".

Hvilket jeg finder en smule underligt, da jeg normalt sagtens kan sammenligne med eks. '31-03-2010'
Avatar billede s0mmer Nybegynder
11. maj 2010 - 10:43 #3
arne_v > Jeg trækker det tilbage.. Ved brug af ADODB (addDate) så kan jeg fint bruge dit eksempel.. Et sidste spørgsmål dog. Jeg vil gerne sortere på taldif DESC. Dog kræver det at den bliver castet til en float. Kan du hjælpe? Og send samtidig gerne svar.
Avatar billede arne_v Ekspert
12. maj 2010 - 01:14 #4
en af følgende vil jeg tro:

... ORDER BY taldif DESC
... ORDER BY CAST(taldif AS FLOAT) DESC
Avatar billede arne_v Ekspert
12. maj 2010 - 01:14 #5
svar
Avatar billede s0mmer Nybegynder
18. maj 2010 - 10:13 #6
Beklager mit langsomme svar.

ORDER BY taldif DESC giver en forkert sortering

ORDER BY CAST(taldif AS FLOAT) DESC som også var mit bedste bud returnerer flg. fejl:
Invalid column name 'taldif'.

Som jeg slet ikke forstår?
Avatar billede arne_v Ekspert
19. maj 2010 - 02:06 #7
ORDER BY CAST((t1.KarakterSamlet - t2.KarakterSamlet)f AS FLOAT) DESC

men det bør give samme sortering som den anden.

Hvad mener du med forkert sortering?
Avatar billede s0mmer Nybegynder
20. maj 2010 - 15:01 #8
Det er mig der tager fejl.. Mange tak for hjælpen og god dag :)
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