条件过滤的MS-Access SQL困难

时间:2012-12-14 16:39:58

标签: sql ms-access

我在MS-Access中有一个查询,我试图根据条件提取一些值,然后对结果求和。

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*")
);

将这些数据放在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

...我希望我的查询给我这个结果集:

Userid Category Gain Used Left
abc123 DH          1   -1    0

1 个答案:

答案 0 :(得分:3)

以下SQL根据您在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

但是,如果您实际上不需要查看GainUsed的单独值,那么这样做会更简单:

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