一个SQL语句引发的血案?

是时候重装系统了 2009-09-11 10:02:17
select sum(Amount),UserName from tbl_Finance Group By UserName

以上SQL语句中 Amount 有正负(正为充值记录,负为消费记录) 现在只想取出为负的统计
不能用where Amount like '%-%' 因为这样的话 没有消费记录的 就会不显示了
比如 UserName=huang 的只有充值记录 没消费记录 那么 他就不会被统计出来 。

有啥解决办法 ?
...全文
74 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
SELECT Xiaofei = SUM(CASE WHEN Amount < 0 THEN Amount ELSE 0 END) , UserName FROM tbl_Finance
GROUP BY UserName




解决啦 ,哈哈 多谢各位了 。。。
xuejiecn 2009-09-11
  • 打赏
  • 举报
回复
a也可以用User表来代替
xuejiecn 2009-09-11
  • 打赏
  • 举报
回复
要用where的,用外连接就行了

select a.UserName,b.Amount from
(select distinct UserName from tbl_Finance) as a
left join
(select sum(Amount) as Amount,UserName from tbl_Finance where Amount<0 Group By UserName) b
on a.UserName =b.UserName
order by a.UserName


ks_reny 2009-09-11
  • 打赏
  • 举报
回复
又一個標題黨.
liangCK 2009-09-11
  • 打赏
  • 举报
回复
select sum(Amount),UserName 
from tbl_Finance
Group By UserName
HAVING SUM(Amount) < 0
  • 打赏
  • 举报
回复
说了不能用 where 郁闷!
--小F-- 2009-09-11
  • 打赏
  • 举报
回复
为什么不能用where?
JonasFeng 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 htl258 的回复:]
SQL codeselectsum(Amount),UserNamefrom tbl_Financewhere Amount<0GroupBy UserName
[/Quote]

这个OK。
  • 打赏
  • 举报
回复
[Quote=引用楼主 huanggreat 的回复:]
select sum(Amount),UserName from tbl_Finance Group By UserName

以上SQL语句中 Amount  有正负(正为充值记录,负为消费记录)  现在只想取出为负的统计
不能用where Amount like '%-%' 因为这样的话  没有消费记录的  就会不显示了
比如 UserName=huang 的只有充值记录  没消费记录  那么 他就不会被统计出来 。

有啥解决办法 ?
[/Quote]


不能用where啊 、
xupeihuagudulei 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]
我被标题吸引过来了
[/Quote]
--小F-- 2009-09-11
  • 打赏
  • 举报
回复
我被标题吸引过来了
SQL77 2009-09-11
  • 打赏
  • 举报
回复
0.0
htl258_Tony 2009-09-11
  • 打赏
  • 举报
回复
select sum(Amount),UserName from tbl_Finance where Amount<0 Group By UserName 

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧