Sql 计算每个用户从库存中增加和减少的总数

Sql 计算每个用户从库存中增加和减少的总数,sql,sql-server-2008,Sql,Sql Server 2008,我有一个设备,可以审计t-sql数据库中的所有库存事务。我需要一个select语句,该语句将生成用户对库存执行了多少加减操作(我们不关心涉及哪些部分,只关心事务的总数)。该表如下所示: userName partNum LastOHQ NewOHQ _____________________________________ joeShmoe 667-5 52 60 lazyP 664-2 88 44 joeShmoe

我有一个设备,可以审计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新手…

您需要使用一些
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
选择用户名,
求和(当NewOHQ-LastOHQ>0时,则为NewOHQ-LastOHQ
其他0(结束)已添加,
求和(当NewOHQ-LastOHQ<0时,则为LastOHQ-NewOHQ
否则(0结束)减去
来自库存交易
按用户名分组

下面是一个示例。

您需要使用一些
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
选择用户名,
求和(当NewOHQ-LastOHQ>0时,则为NewOHQ-LastOHQ
其他0(结束)已添加,
SUM(NewOHQ-LastOHQ<0时,LastOHQ-NewOHQ时为例
否则(0结束)减去
来自库存交易
按用户名分组

下面是一个例子。

从技术上讲,它们是表达式而不是语句,因为它们产生值。@Damien_The_unsiever:好主意。我匆忙地拼凑了那句话。这正是我想要做的,谢谢!从技术上讲,它们是表达式而不是语句,因为它们产生值。@Damien_The_unsiver:好主意。我匆忙地拼凑了那句话。这正是我想要做的,谢谢!