sql-server – 如果是肯定的,请汇总所有项目.如果是负数,则返回每一个

前端之家收集整理的这篇文章主要介绍了sql-server – 如果是肯定的,请汇总所有项目.如果是负数,则返回每一个前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要找到一种方法来SUM()num的所有正值,并返回所有正数的SUM()和每个负数的单独行.以下是DDL示例:
  1. Create Table #Be
  2. (
  3. id int,salesid int,num decimal(16,4)
  4. )
  5.  
  6. Insert Into #BE Values
  7. (1,1,12.32),(2,-13.00),(3,14.00),(4,2,12.12),(5,(6,21.23),(7,3,-12.32),(8,-43.23),(9,-2.32)

这是我想要的输出(每个salesid SUM()的正数和负数返回单个行):

  1. salesid num
  2. 1 26.32
  3. 1 -13.00
  4. 2 47.35
  5. 3 -12.32
  6. 3 -43.23
  7. 3 -2.32

解决方法

试试这个:
  1. SELECT salesid,sum(num) as num
  2. FROM #BE
  3. WHERE num > 0
  4. GROUP BY salesid
  5. UNION ALL
  6. SELECT salesid,num
  7. FROM #BE
  8. WHERE num < 0;

如果你想要两行中的和值,那么你必须创建一个maxValue(和minValue)函数并将其用作sum(maxValue(0,num))和sum(minValue(0,num)).这在以下描述:Is there a Max function in SQL Server that takes two values like Math.Max in .NET?

猜你在找的MsSQL相关文章