2

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
4

1 に答える 1

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

Gainただし、との個別の値を実際に確認する必要がない場合は、次のようにUsedする方が簡単です。

SELECT
    Userid,
    Category,
    Sum([Value]) AS [Left]
FROM SchedulingLog
GROUP BY
    Userid,
    Category
于 2012-12-14T17:12:28.650 に答える