Foxtable(狐表)用户栏目专家坐堂 → 关于CASE表达式的一个问题


  共有3922人关注过本帖树形打印复制链接

主题:关于CASE表达式的一个问题

帅哥哟,离线,有人找我吗?
czy66ds
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1691 积分:16472 威望:0 精华:0 注册:2013/7/31 13:03:00
关于CASE表达式的一个问题  发帖心情 Post By:2023/5/23 13:35:00 [只看该作者]

执行下列代码通过
SE LECT Month(日期) AS 月,  SUM(成交金额)  AS '本期金额' FROM {某外部表} WH ERE Year(日期) = 2023 or Year(日期) = 2021 GROUP by Month(日期)

执行下列代码报错
SE LECT Month(日期) AS 月,CASE WHEN Year(日期) = 2023 THEN SUM(成交金额) ELSE NULL END   AS '本期金额',CASE WHEN Year(日期) = 2021 THEN SUM(成交金额) ELSE NULL END  AS '前期金额'  FROM {某外部表} WH ERE Year(日期) = 2023 or Year(日期) = 2021 GROUP by Month(日期)

报错信息:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
选择列表中的列 '全品牌销售记录表含品牌.日期' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

何故?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/23 13:41:00 [只看该作者]

SE LECT Month(日期) AS 月,SUM(CASE WHEN Year(日期) = 2023 THEN 成交金额 ELSE 0 END )  AS '本期金额',SUM(CASE WHEN Year(日期) = 2021 THEN 成交金额 ELSE 0 END ) AS '前期金额'  FROM {某外部表} 

 回到顶部
帅哥哟,离线,有人找我吗?
czy66ds
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1691 积分:16472 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2023/5/23 14:02:00 [只看该作者]

经测试,这样写还是报同样的错误

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/23 14:17:00 [只看该作者]

select 月,SUM(本期金额) as 本期金额,SUM(前期金额) as 前期金额 from(SELECT Month(日期) AS 月,CASE WHEN Year(日期) = 2023 THEN 成交金额 ELSE 0 END   AS 本期金额,CASE WHEN Year(日期) = 2021 THEN 成交金额 ELSE 0 END  AS 前期金额  FROM 某外部表 WHERE Year(日期) = 2023 or Year(日期) = 2021 ) as a GROUP by 


 回到顶部
帅哥哟,离线,有人找我吗?
czy66ds
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1691 积分:16472 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2023/5/23 14:54:00 [只看该作者]

谢谢,成功。

 回到顶部