这个分类统计的SQL怎么写?

MicLee521 2004-08-05 12:35:44
点单记录表
点菜编号 酒菜编号 数量 点单类型
1 101001 1 点单
2 101003 3 点单
3 101003 -2 退单
4 101001 3 点单
....

想要结果:

酒菜编号 点单数量 退单数量 总数
101001 4 0 4
101003 3 -2 1

.......

谢谢
...全文
140 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
MicLee521 2004-08-06
  • 打赏
  • 举报
回复
IIF函数也不太好写啊
vbangle 2004-08-06
  • 打赏
  • 举报
回复
换成IIF语句即可
MicLee521 2004-08-06
  • 打赏
  • 举报
回复
谢谢勇哥、阿文等兄弟的帮忙,不过我用的数据库是Access的,好像不支持case 语句
这叫我如何是好?
fxy_2002 2004-08-06
  • 打赏
  • 举报
回复
<access 数据库>

select 酒菜编号,sum(iif(点单类型='点单',数量,0)) as 点单数量,sum(iif(点单类型='退单',数量,0)) as 退单数量,sum(数量) as 总数 from 表名 group by 酒菜编号
mlxboy 2004-08-05
  • 打赏
  • 举报
回复
select 酒菜编号,sum(case 点单类型 when '点单' then 数量 else 0 end) as 点单数量,sum(case 点单类型 when '退单' then 数量 else 0 end) as 退单数量,sum(数量) as 总数 from 表名 group by 酒菜编号


很正确
computer17 2004-08-05
  • 打赏
  • 举报
回复
写得不错啊
WangPengAn 2004-08-05
  • 打赏
  • 举报
回复
不好意思﹐寫錯了
fxy_2002 2004-08-05
  • 打赏
  • 举报
回复
楼上的变动不错,不过好象 case 中有错误,应该用 then 换掉 as。楼主可再试这个看看:

select 酒菜编号,sum(case 点单类型 when '点单' then 数量 else 0 end) as 点单数量,sum(case 点单类型 when '退单' then 数量 else 0 end) as 退单数量,sum(数量) as 总数 from 表名 group by 酒菜编号
WangPengAn 2004-08-05
  • 打赏
  • 举报
回复
打錯一個字

Select 酒菜编号,Sum(Case 點單類型 WHen '點單' As 數量 Else 0 End)
as '點單數量',
Sum(Case 點單類型 WHen '退單' As 數量 Else 0 End) as '退單數量',
Sum(數量) as '總數' From
yourTable Group By 酒菜编号

試一下!
WangPengAn 2004-08-05
  • 打赏
  • 举报
回复
Select 酒菜编号,Sum(Case 點單類型 WHen '點單' As 數量 Else 0 End)
as '點單數量',
Sum(Case 點單類型 WHen '點單' As 數量 Else 0 End) as '退單數量',
Sum(數量) as '總數' From
yourTable Group By 酒菜编号

試一下!
fxy_2002 2004-08-05
  • 打赏
  • 举报
回复
不好意思楼主,刚验证以上代码得出的结果不正确。
fxy_2002 2004-08-05
  • 打赏
  • 举报
回复
没有表,以上代码没经过测试,不一定正确。楼主自己试一试,呵呵!
fxy_2002 2004-08-05
  • 打赏
  • 举报
回复
<对 sql server 数据库>

select 酒菜编号,点单类型,case 点单类型 when '点单' then sum(数量) end as 点单数量,case 点单类型 when '退单' then sum(数量) end as 退单数量,sum(数量) as 总数 from 表名 group by 酒菜编号,点单类型


1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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