Sql 计算每个用户从库存中增加和减少的总数
我有一个设备,可以审计t-sql数据库中的所有库存事务。我需要一个select语句,该语句将生成用户对库存执行了多少加减操作(我们不关心涉及哪些部分,只关心事务的总数)。该表如下所示: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
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:好主意。我匆忙地拼凑了那句话。这正是我想要做的,谢谢!