我有一台设备可以审核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新手...
答案 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。