以下这段代码错在哪里了?

coffeemilk 2006-05-15 04:43:05
以下这段代码错在哪里了?
我是统计某天分别action =1或者2的时候费用的总值是多少!

SELECT b.FeeCode AS FeeCode, b.Name AS name, b.SPServiceID AS SPServiceID,
(CASE WHEN action = 1 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0) adds,
(CASE WHEN action = 2 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0) adds1
FROM DZ a, Sms b
WHERE a.SPServiceID = b.SPServiceID AND (a.DzTime > '2006-05-10 00:00:00')
GROUP BY b.FeeCode, b.Name, b.SPServiceID

在线等
...全文
127 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
itblog 2006-05-15
  • 打赏
  • 举报
回复
这样可以满足你的要求

SELECT b.FeeCode AS FeeCode, b.Name AS name, b.SPServiceID AS SPServiceID,
SUM(CASE WHEN action = 1 THEN CONVERT(int, b.FeeCode) ELSE 0 end ) adds,
SUM(CASE WHEN action = 2 THEN CONVERT(int, b.FeeCode) ELSE 0 end) adds1
FROM DZ a, Sms b
WHERE a.SPServiceID = b.SPServiceID AND (a.DzTime > '2006-05-10 00:00:00')
GROUP BY b.FeeCode, b.Name, b.SPServiceID
coffeemilk 2006-05-15
  • 打赏
  • 举报
回复
不愧是五个红星的,厉害!就这样对了
coffeemilk 2006-05-15
  • 打赏
  • 举报
回复
各位,现在其实很简单.就是把action=1(订购) and action=2(取消) 的统计数列出来.
现在我用上面的方法.出现了得把action这字段得包括在GROUP 里.这样一来.统计出来的结果肯定多了
itblog 2006-05-15
  • 打赏
  • 举报
回复
SELECT b.FeeCode AS FeeCode, b.Name AS name, b.SPServiceID AS SPServiceID,
(CASE WHEN action = 1 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0 end) adds,
(CASE WHEN action = 2 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0 end) adds1
FROM DZ a, Sms b
WHERE a.SPServiceID = b.SPServiceID AND (a.DzTime > '2006-05-10 00:00:00')
GROUP BY b.FeeCode, b.Name, b.SPServiceID
hyrongg 2006-05-15
  • 打赏
  • 举报
回复
SELECT b.FeeCode AS FeeCode, b.Name AS name, b.SPServiceID AS SPServiceID,
(CASE WHEN action = 1 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0 end) adds,
(CASE WHEN action = 2 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0 end) adds1
FROM DZ a, Sms b
WHERE a.SPServiceID = b.SPServiceID AND (a.DzTime > '2006-05-10 00:00:00')
GROUP BY b.FeeCode, b.Name, b.SPServiceID

zzit0721 2006-05-15
  • 打赏
  • 举报
回复
SELECT b.FeeCode AS FeeCode, b.Name AS name, b.SPServiceID AS SPServiceID,
(CASE WHEN action = 1 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0 end) adds,
(CASE WHEN action = 2 THEN SUM(CONVERT(int, b.FeeCode)) ELSE 0 end) adds1
FROM DZ a, Sms b
WHERE a.SPServiceID = b.SPServiceID AND (a.DzTime > '2006-05-10 00:00:00')
GROUP BY b.FeeCode, b.Name, b.SPServiceID

CASE语句少END结束,加上就好了
子陌红尘 2006-05-15
  • 打赏
  • 举报
回复
1、SUM()应该在CASE ... WHEN ... 之外,对表达式汇总

2、CASE ... WHEN ... END,一定要用END。
子陌红尘 2006-05-15
  • 打赏
  • 举报
回复
SELECT
b.FeeCode AS FeeCode,
b.Name AS name,
b.SPServiceID AS SPServiceID,
SUM(CASE WHEN action=1 THEN CONVERT(int,b.FeeCode) ELSE 0 end) as adds,
SUM(CASE WHEN action=2 THEN CONVERT(int,b.FeeCode) ELSE 0 end) as adds1
FROM
DZ a, Sms b
WHERE
a.SPServiceID = b.SPServiceID AND (a.DzTime > '2006-05-10 00:00:00')
GROUP BY
b.FeeCode, b.Name, b.SPServiceID

34,591

社区成员

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

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