Desert Spider
Desert Spider

Reputation: 778

MS-Access SQL difficulties with conditional filtering

I have a query in MS-Access that I am trying to pull some values based on a condition, then sum the results.

SELECT SchedulingLog.UserID, SchedulingLog.Category, Sum(SchedulingLog.Value) AS Gain, Sum(SchedulingLog.Value) AS Used, [Gain]+[Used] AS [Left]
FROM SchedulingLog
GROUP BY SchedulingLog.UserID, SchedulingLog.Category, [Gain]+[Used]
HAVING ((
(SchedulingLog.Category) Like "DH*" Or 
(SchedulingLog.Category) Like "Com*") AND 
("Where[CatDetai]" Like "Gain*") AND 
("Where[CatDetai]" Like "Used*")
);

With these data in SchedulingLog ...

Userid LogDate EventDate Category CatDetail Value
abc123  1-1-11    7-2-11 DH       DH Used      -1
abc123  1-1-11    7-4-11 DH       DH Gain       1

... I want my query to give me this result set:

Userid Category Gain Used Left
abc123 DH          1   -1    0

Upvotes: 2

Views: 445

Answers (1)

HansUp
HansUp

Reputation: 97131

The following SQL returns what you asked for based on testing with your sample data in Access 2007.

SELECT
    Userid,
    Category,
    Sum(IIf(CatDetail ALike '%Gain', [Value], 0)) AS Gain,
    Sum(IIf(CatDetail ALike '%Used', [Value], 0)) AS Used,
    [Gain] + [Used] AS [Left]
FROM SchedulingLog
GROUP BY
    Userid,
    Category

However, if you don't actually need to see the separate values for Gain and Used, it would be simpler to do it this way:

SELECT
    Userid,
    Category,
    Sum([Value]) AS [Left]
FROM SchedulingLog
GROUP BY
    Userid,
    Category

Upvotes: 3

Related Questions