webForumDet fria alternativet

select mellan valda tider under ett dygn

Databaser & SQLur Databashanterare & SQL

2 svar · 168 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

denna sats funkar bara om alla variablar innehåller datum.
men t.ex. @n1b och @n2b är ibland null, då hämtar satsen ingenting.
kan man lägga en case på nått vis eller kan man skriva om satsen?
(@Objectid, @Startdate och @Stopdate innehåller alltid värden, de övriga kan vara null)

Select Case when sum(Timeloss) is null Then 0
Else sum(Timeloss) 
end
From Productionlog_time t
Inner Join Productionlogtbl p On t.Logid = p.Logid
Where  p.Objectid = @Objectid And
p.Starttime between @Startdate And @Stopdate And 
p.Stoptime between @Startdate And @Stopdate And

p.Starttime not between @n1b And @n2b And
p.Stoptime not between @n1b And @n2b And

p.Starttime not between @f1b And @f2b And
p.Stoptime not between @f1b And @f2b And

p.Starttime not between @e1b And @e2b And
p.Stoptime not between @e1b And @e2b
LarsGMedlem sedan dec. 200012 464 inlägg
#2
p.Starttime not between coalesce(@n1b,'1900-01-01') And coalesce(@n2b,'2037-12-31')

eller vilken semantik du nu vill ha då nb1 eller nb2 är null.

doggelitoMedlem sedan juni 20003 076 inlägg
#3

precis så! :bire

120 ms totalt · 3 externa anrop · v20260731065814-full.363dfaf6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
117 ms — hämta tråd, inlägg och bilagor (db)