菜鸟问题,解决后给分

lxjian2008 2006-06-13 08:39:40
有一个表,表结构如下:
a varchar(20);
b varchar(20);
c numeric(9);
d numeric(9);
数据例如
a b c d

A f 3.50 6.90
B f 8.33 5.64
C d 13.20 15.63

根据b字段汇总输出c-d大于0的记录数,c-d小于0的记录数,以及c不等于d的记录数,语句怎么写,谢谢!
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
云中客 2006-06-13
  • 打赏
  • 举报
回复
楼上正解,应该有GROUP BY B,否则不能分类汇总
xeqtr1982 2006-06-13
  • 打赏
  • 举报
回复
declare @T table(a varchar(20),b varchar(20),c numeric(9),d numeric(9))
insert into @t select 'A','f',3.50,6.90
union all select 'B','f',8.33,5.64
union all select 'C','d',13.20,15.63

select b,
[c-d>0]=sum(case when c-d>0 then 1 else 0 end),
[c-d<0]=sum(case when c-d<0 then 1 else 0 end),
[c<>d]=sum(case when c<>d then 1 else 0 end)
from @t
group by b

--少看了个条件,根据b字段
xeqtr1982 2006-06-13
  • 打赏
  • 举报
回复
declare @T table(a varchar(20),b varchar(20),c numeric(9),d numeric(9))
insert into @t select 'A','f',3.50,6.90
union all select 'B','f',8.33,5.64
union all select 'C','d',13.20,15.63

select [c-d>0]=sum(case when c-d>0 then 1 else 0 end),
[c-d<0]=sum(case when c-d<0 then 1 else 0 end),
[c<>d]=sum(case when c<>d then 1 else 0 end)
from @t

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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