Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Find a record
Message
From
01/02/2008 08:51:28
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Microsoft SQL Server
Category:
SQL syntax
Title:
Environment versions
SQL Server:
SQL Server 2005
Miscellaneous
Thread ID:
01287531
Message ID:
01287935
Views:
10
>Consider this table:
>pk uniqueidentifier
>fk bigint
>clock datetime
>
>I need an SP that can do the following:
>If there are zero records for that day, insert a record.
>If there is one record for that day, insert a record.
>If there are two or more records for that day:
> - do nothing if the time falls between the min and max time for that day
> - update the min time record if the passed clock is less than the min time for that day
> - update the mmax time record if the passed clock is greater than the max time for that day
>
>This is what I've got. but I am not sure how to find the correct record (if needed) to update
>
>SELECT @count = count(*) FROM mytable
>WHERE fk=@fk AND
>YEAR(clock) = YEAR(@clock) AND
>MONTH(clock) = MONTH(@clock) AND
>DAY(clock) = DAY(@clock)
>
>IF @count<2 BEGIN
>	// insert this is easy
>END ELSE BEGIN
>	// find the correct @pk to update
>END
>
>
>Any help appreciated.

Do you mean this?
SELECT * FROM mytable 
 WHERE fk=@fk AND datediff(day,clock,@clock) = 0;

if @@rowcount < 2
   begin
-- insert
Insert ...
   end
else
   begin
	update myTable set
	  minTime = case when @clock < mintime then @clock else mintime end,
	  maxTime = case when @clock > maxtime then @clock else maxtime end
	  where fk=@fk AND datediff(day,clock,@clock) = 0;
   end
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Reply
Map
View

Click here to load this message in the networking platform