>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 ...
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