计算事务数据库中的总数,其中值为负数和正数

时间:2013-08-30 09:46:07

标签: sql sql-server sql-server-2008 tsql

我有一个问题可能有一个我想念的简单解决方案。

我有一个交易数据库,我必须使用它建立一个查询来计算会员在过去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。

0 个答案:

没有答案