Avatar billede nlbgf Nybegynder
09. marts 2001 - 14:51 Der er 7 kommentarer og
1 løsning

Simpel forespørgsel

Jeg har to kolonner: Taeller (tæller) samt Tid i min SQL Server database

Vi starter med et eksempel på, hvordan dataene i de to kolonner kunne se ud:

Taeller  Tid
5    2001-03-09 14:42:11
4    2001-03-09 14:42:10
3    2001-03-09 14:42:09
3    2001-03-09 14:42:08
3    2001-03-09 14:42:07
3    2001-03-09 14:42:06
2    2001-03-09 14:42:05
1    2001-03-09 14:42:04
0    2001-03-09 14:42:03

Som I kan se, tæller tælleren op hele tiden. En enkelt gang i mellem kan den dog stå stille. Nu vil jeg så meget gerne have tidspunktet for hvornår den begyndte at stå stille, hvornår den kørte videre, og hvad værdien var. Det vil altså sige, at jeg gerne vil have følgende output fra min SQL sætning:

StartTid, SlutTid, Taeller
2001-03-09 14:42:06, 2001-03-09 14:42:09, 3

Hvordan søren gør jeg det?
Avatar billede moykal Nybegynder
12. marts 2001 - 13:59 #1
Hvad med sådan her:

select Taeller,dbo.fcnStartTid(Taeller) as StartTid, dbo.fcnSlutTid(Taeller) as SlutTid from Test order by Taeller

hvor du indsætter to inline funktioner:

CREATE FUNCTION dbo.fcnStartTid (@nTaeller int)
RETURNS DATETIME AS 
BEGIN
    return (select top 1 Tid from Test where Taeller = @nTaeller order by Tid)
END

CREATE FUNCTION dbo.fcnSlutTid (@nTaeller int)
RETURNS DATETIME AS 
BEGIN
    return (select top 1 Tid from Test where Taeller = @nTaeller order by Tid desc)
END

Det virker for mig
Avatar billede proaccess Nybegynder
12. marts 2001 - 14:07 #2
Der burde være tale om en simpel SELECT med GROUP BY...

SELECT Min(Tid) AS StartTid, Max(Tid) AS SlutTid, Taeller FROM RecordSet GROUP BY Taeller;

HTH
ProAccess
Avatar billede moykal Nybegynder
12. marts 2001 - 14:11 #3
Du har selvfølgeligt ret. Jeg er bare en SQL-spadser. Sorry
Avatar billede proaccess Nybegynder
12. marts 2001 - 14:30 #4
Du var nok bare en bid FOR grundig ;-)
Avatar billede moykal Nybegynder
12. marts 2001 - 14:32 #5
Jeg er C++-programmør, og vant til at accessere DB\'er gennem OLEDB eller ADO. Og så er man tid - lad os bare kalde det \"grundig\" (pænt af dig) - når man endeligt skal besvare lidt. Godt du havde noget brugbart
Avatar billede nlbgf Nybegynder
12. marts 2001 - 14:43 #6
Okay. Men når jeg kører proaccess\' SQL får jeg jo alle værdier af tæller. Jeg vil kun have de værdier hvor SlutTid-StartTid > 0

Hvordan gør jeg det? Jeg kan godt få det til at virke, hvis SlutTid-StartTid blot skal være større end 0, men hvis den fx skal være større end 1, så virker det ikke...
Avatar billede nlbgf Nybegynder
12. marts 2001 - 14:44 #7
Hov! Jo, det virker da fint... Tak for hjælpen
Avatar billede proaccess Nybegynder
12. marts 2001 - 14:47 #8
Det var så lidt, jeg er glad for at det var en hjælp.
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