我有一个问题,可能有一个我缺少的简单解决方案。
我有一个交易数据库,我必须使用它来构建一个查询,以计算成员在过去 X 时间段内使用他们的会员卡花费了多少。
当有退货或重新加载卡时,值可能是正数。ArticleID
当为 5033时,我计算负值 AND 的总和。
╔═════════╦═══════════════════╦═══════════╦══════════╦═══════════╦════════════╦═════════════════════════════╦══════════════════════════════╦═══════════════╦═══════════════╗
║ ID ║ MemberNumber ║ ArticleID ║ Quantity ║ Price ║ TotalPrice ║ PurchaseDate ║ PurchaseDateTime ║ AssociateID ║ PaymentTypeID ║
╠═════════╬═══════════════════╬═══════════╬══════════╬═══════════╬════════════╬═════════════════════════════╬══════════════════════════════╬═══════════════╬═══════════════╣
║ 1174030 ║ 45143 ║ -1 ║ 1 ║ 74,00 ║ 74,00 ║ 2012-11-16 00:00:00.000 ║ 40:24.0 ║ 72 ║ 1 ║
║ 1174028 ║ 45143 ║ 5033 ║ 1 ║ -74,00 ║ -74,00 ║ 2012-11-16 00:00:00.000 ║ 35:33.0 ║ 7 ║ 15 ║
╚═════════╩═══════════════════╩═══════════╩══════════╩═══════════╩════════════╩═════════════════════════════╩══════════════════════════════╩═══════════════╩═══════════════╝
在上面的例子中,有人以 74 的价格买了东西,但几分钟后又退回了。ArticleID 在这里没有帮助,因为-1
它也用于其他事情。在这种情况下,总数应为 0。
所以,
SELECT SUM(TOTALPRICE)
FROM TABLEX
WHERE CONDITIONY
不工作,因为我也过滤掉了其他 ArticleID。