我有一个问题可能有一个我想念的简单解决方案。
我有一个交易数据库,我必须使用它建立一个查询来计算会员在过去X时间段内使用其会员卡花费的金额。
当返回或重新加载卡时,值可以是正值。当ArticleID
为5033时,我计算负值的和的总和。
╔═════════╦═══════════════════╦═══════════╦══════════╦═══════════╦════════════╦═════════════════════════════╦══════════════════════════════╦═══════════════╦═══════════════╗
║ 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。