2012-12-14 31 views
2

我在MS-Access中有一個查詢,我試圖根據條件拉一些值,然後求和結果。MS-Access有條件篩選的SQL困難

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 
+0

你可以解釋HAVING條件? – luchosrock

+0

你能告訴我們錯誤是什麼嗎? – PowerUser

+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 
+0

HansUp !!! Dude你是我的Access SQL HERO !!!! –