I have events that are being treated differently based on whether or not expenses have 0 attendees.
Each event has a unique code with several expense line items. If the attendee
field has ALL 0
for each expense in this event code, then I need to append the method
field to say method 1
, for each expense with this event code.
If ANY of the line items with the same event code have a 0
but the sum of all of them is > 0
then I need to append the method
field to say method 2
If ALL of the line items are > 0
then I need to append the method
field to say method 3
Thanks for any help! Sorry for not having more code in this, I am at a loss.
Sample Data:
Advertisement
Answer
Since MS Access does not support aggregation within update
queries, one possible alternative might be to use the domain aggregate functions DMin
& DMax
, e.g.:
update YourTable t
set t.method =
iif
(
dmax("attendee","YourTable","EventID = '" & t.EventID & "'")=0,
1,
iif
(
dmin("attendee","YourTable","EventID = '" & t.EventID & "'")=0,
2,
3
)
)
This assumes that attendee
will never be negative.
Alternatively, if you wanted to avoid the domain aggregate functions, you could write the values using three separate update queries – one for each method
value:
Method = 1
update YourTable t
set t.method = 1
where not exists (select 1 from YourTable t2 where t2.eventid = t.eventid and t2.attendee > 0)
Method = 2
update YourTable t
set t.method = 2
where exists (select 1 from YourTable t2 where t2.eventid = t.eventid and t2.attendee > 0)
and exists (select 1 from YourTable t2 where t2.eventid = t.eventid and t2.attendee = 0)
Method = 3
update YourTable t
set t.method = 3
where not exists (select 1 from YourTable t2 where t2.eventid = t.eventid and t2.attendee = 0)
In all of the above, change all occurrences of YourTable
to the name of your table, and the fields attendee
& EventID
to suit your field names.