加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2021-03-31 15:48:06 所属栏目:MsSql教程 来源:网络整理
导读:我需要找到一种方法来SUM()num的所有正值,并返回所有正数的SUM()和每个负数的单独行.以下是DDL示例: Create Table #Be( id int,salesid int,num decimal(16,4))Insert Into #BE Values (1,1,12.32),(2,-13.00),(3,14.00),(4,2,12.12),(5,(6,21.23),(7,3,-

我需要找到一种方法来SUM()num的所有正值,并返回所有正数的SUM()和每个负数的单独行.以下是DDL示例:

Create Table #Be
(
    id int,salesid int,num decimal(16,4)
)

Insert Into #BE Values
    (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()的正数和负数返回单个行):

salesid    num
1          26.32
1          -13.00
2          47.35
3          -12.32
3          -43.23
3          -2.32

解决方法

试试这个:
SELECT   salesid,sum(num) as num
FROM     #BE
WHERE    num > 0
GROUP BY salesid
UNION ALL
SELECT   salesid,num
FROM     #BE
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?

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读