我有一个问题,我必须根据列计算查询中应包含哪些记录。
我的表看起来像这样
Client_Id Event ProductID Date Cart
1 rem 28 2012-02-23 573473
1 add 28 2012-02-23 573473
1 rem 24 2012-02-23 573473
正如您所看到的,在 Event 列中有一个 add 和 rem,这基本上意味着用户已经从他们的购物车中添加或删除了产品。
我需要得到的是只有当 productID 28 的值为正时的记录。
28 加一,删除 = 0 表示他们的购物车中没有该商品。
我为此写的查询是这样的:
SELECT Client_Id,
Event,
ProductID,
Date,
Cart
FROM (SELECT *,
'Include' = CASE
WHEN Total > 0 THEN 1
ELSE 0
END
FROM (SELECT *,
[ADD] + REM AS Total
FROM (SELECT *,
'ADD' = CASE
WHEN Event = 'add' THEN 1
ELSE 0
END,
'REM' = CASE
WHEN Event = 'rem' THEN -1
ELSE 0
END
FROM Feed) a)b)c
WHERE c.[Include] = 1
但我不禁认为这是错误的,因为它只计算该行中的 productID 而不是总行数。
谁能指出我正确的方向?
谢谢