首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要在一列中计算两个单独的值

需要在一列中计算两个单独的值
EN

Stack Overflow用户
提问于 2014-10-07 15:01:14
回答 2查看 94关注 0票数 0

我试图让两个单独的值的和出现在一行中,每个唯一的ID。我尝试了几个路线,但仍然不能使所有的东西都出现在一行中。我尝试过几种使用case语句的不同方法,我也尝试过在分区中使用OVER,但都没有效果。

到目前为止,我的问题如下:

代码语言:javascript
运行
复制
select distinct ID_NUM, 
  sum(case when isnull(sch.SUBTERM_CDE,0) like '%N' then 1 else 0 end) as 'total_n',
  sum(case when isnull(sch.SUBTERM_CDE,0) like '%T' then 1 else 0 end) as 'total_t'
from STUDENT_CRS_HIST sch
where sch.END_DTE > GETDATE()
group by sch.ID_NUM, sch.SUBTERM_CDE
order by ID_NUM
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-07 15:07:52

您几乎是对的,但是您正在按一个额外的列进行分组:

代码语言:javascript
运行
复制
SELECT  ID_NUM, 
        SUM(CASE WHEN sch.SUBTERM_CDE LIKE '%N' THEN 1 ELSE 0 END) AS total_n,
        SUM(CASE WHEN sch.SUBTERM_CDE LIKE '%T' THEN 1 ELSE 0 END) AS total_t
FROM STUDENT_CRS_HIST sch
WHERE sch.END_DTE > GETDATE()
GROUP BY sch.ID_NUM -- you shouldn't group by SUBTERM_CDE
ORDER BY ID_NUM
票数 2
EN

Stack Overflow用户

发布于 2014-10-07 15:09:33

更改group by以删除SUBTERM_CDE

代码语言:javascript
运行
复制
select ID_NUM, 
       sum(case when sch.SUBTERM_CDE like '%N' then 1 else 0 end) as total_n,
       sum(case when sch.SUBTERM_CDE like '%T' then 1 else 0 end) as total_t
from STUDENT_CRS_HIST sch
where sch.END_DTE > GETDATE()
group by sch.ID_NUM
order by ID_NUM;

此外:

  • distinct是不需要的,而且具有误导性。
  • 列别名不应包含在单引号中(仅对字符串和日期常量使用单引号)。
  • NULL的文本是不必要的--而且具有误导性。替代值是一个整数,但该字段应该是一个字符串。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26239089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档