Link to home
Start Free TrialLog in
Avatar of ktjamms2
ktjamms2Flag for United States of America

asked on

Update query to determine if date is a weekend

I want to update a field's value to the previous day's field value (if on a Saturday) or to the value of the day after (if on a Sunday). I'm not sure of the correct syntax.

I tried this:
UPDATE [Copy Of IMPORT_Current] SET [Copy Of IMPORT_Current].WATER = DateAdd("d",-1, [Copy Of IMPORT_Current]![DATE])
IIf (Weekday([Copy Of IMPORT_Current]![DATE],1) =7
 
but it's not the correct syntax and it doesn't utilize the "OR" criteria I'm aiming for.

Any help would be great!
Thanks,
KT
Avatar of Phillip Burton
Phillip Burton

Try this:

UPDATE [Copy Of IMPORT_Current] SET [Copy Of IMPORT_Current].WATER = DateAdd("d",
iif(Weekday([Copy Of IMPORT_Current]![DATE],1) =7,-1,iif(Weekday([Copy Of IMPORT_Current]![DATE],1) =1,1,0)), 
[Copy Of IMPORT_Current]![DATE])

Open in new window

Avatar of ktjamms2

ASKER

Actually I need:

SET [Copy Of IMPORT_Current].WATER = [Copy Of IMPORT_Current].WATER of the day before
Which is why there is a -1 in line 2.
I'm not sure what you have, but it looks like its setting the value to a date.  I need the value set to the number value of the corresponding date:

SET [Copy Of IMPORT_Current].WATER = [Copy Of IMPORT_Current].WATER of the day before if the [Copy Of IMPORT_Current]![DATE] is a Saturday

or

SET [Copy Of IMPORT_Current].WATER = [Copy Of IMPORT_Current].WATER of the day after if the [Copy Of IMPORT_Current]![DATE] is a Sunday
What do you mean, "number value"?
rephrased:
Set Saturday's water values to Friday's water values
and Set Sunday's water values to Monday's water values
Explanation:
I don't get numbers for weekends. So, I want to just use the numbers for the day before or from the day after depending  on whether it's Saturday or Sunday
Now that you have the relevant date, in a second query, you do a Left Join with the original table to get the relevant date's value,
Avatar of Hamed Nasr
List 3 records, and show required output.
ID            DATE                  WATER

20            11/1/2014            0
20            11/2/2014            225
20            11/3/2014            100      
20            11/4/2014            200
20            11/5/2014            350
20            11/6/2014            500
20            11/7/2014            220
20            11/8/2014            0

11/1/2014 IS A SUNDAY. THE WATER NEEDS TO BE UPDATED TO THE NEXT DAY'S WATER VALUE (11/2/2014, MONDAY). THAT VALUE WOULD BE 225

11/8/2014 IS A SATURDAY. THE WATER NEEDS TO BE UPDATED TO THE PREVIOUS DAY'S WATER VALUE (11/7/2014, FRIDAY). THAT VALUE WOULD BE 220

THERE ARE MULTIPLE IDs AND DATES IN THE TABLE. I ONLY SHOWED AN EXAMPLE OF ONE CASE FOR A WEEK IN THIS EXAMPLE.
Now that you have the relevant date, in a second query, you do a Left Join with the original table to get the relevant date's value,
I don't understand what you are saying----- "Now that you have the relevant date, in a second query, you do a Left Join with the original table to get the relevant date's value, "

Could you show the SQL code?
ASKER CERTIFIED SOLUTION
Avatar of Phillip Burton
Phillip Burton

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial