计算每个用户的库存总增加量和减少量

时间:2014-01-23 14:36:31

标签: sql sql-server-2008

我有一台设备可以审核t-sql数据库的所有库存交易。我需要一个select语句,它将生成用户对库存执行了多少次加法和减法(我们不关心涉及哪些部分,只涉及总交易总数)。该表看起来像:

userName   partNum  LastOHQ   NewOHQ
_____________________________________
joeShmoe    667-5     52        60
lazyP       664-2     88        44
joeShmoe    89-66     78        22
jesseJames  100-1     19        99

现在,考虑到基础数学的使用,我能够确定交易是否正在添加到库存中,或者通过使用[NewOHQ - LastOHQ =?]删除,如果数字是正数,我知道它已被添加,如果否定,它被删除了。

如何创建如下结果集:

userName    added   subtracted
______________________________
joeShmoe       8        56
lazyP         0        44
jesseJames    80       0

~SQL新手...

1 个答案:

答案 0 :(得分:4)

您需要使用一些CASE表达式来创建计算列。

SELECT userName,
    SUM(CASE WHEN NewOHQ - LastOHQ > 0 THEN NewOHQ - LastOHQ
         ELSE 0 END) added,
    SUM(CASE WHEN NewOHQ - LastOHQ < 0 THEN LastOHQ - NewOHQ
         ELSE 0 END) subtracted
FROM InventoryTransactions
GROUP BY userName

这是显示您的示例的sqlfiddle