0

如何在 SQL Server 2008 中汇总子查询数据?

在这个查询中,我想Score在这个函数中对这个列数据求和CASE,在数字范围之间的点,足够的时间我尝试对这个列求和它显示错误。

现在我想将此列Score与 a相加Group by Applicant id,我可以将Score列数据汇总在一起的方式是什么?

但我不能做这个查询。请帮助我,我是初学者。

SELECT   
    ApplicantId, point,
    'Score' =  CASE 
                 WHEN  point BETWEEN 4.00 AND 4.50 THEN ('3' )
                 WHEN  point BETWEEN 3.5 AND 4.00 THEN ('2' ) 
              END
FROM tblAcademicInfo
WHERE tblAcademicInfo.ApplicantId = tblAcademicInfo.ApplicantId

输出:

ApplicantId  point   Score
--------------------------------
   xzc1  3.25    NULL
   xzc1  4.36    3
   xzc1  3.59    2
   xzc1  4.00    3
4

3 回答 3

1

有几个问题

  1. 你的WHERE条款没有意义
  2. 对每个申请人使用SUM()GROUP BY条款的分数求和
  3. 为了能够对值求和,您应该返回数值CASE而不是字符串文字
  4. 在您的查询point中,您的选择中有列。但这不是GROUP BY因为你想分组的一部分applicantid。因此,您应该在此列上应用聚合函数(例如,也SUM())或将其从结果集中删除。

尝试

SELECT ApplicantId,
       SUM(CASE WHEN  point BETWEEN 4.0 AND 4.5 THEN 3
                WHEN  point BETWEEN 3.5 AND 4.0 THEN 2 
       END) Score
  FROM tblAcademicInfo
 GROUP BY ApplicantId

输出:

| 申请人 | 分数 |
|-------------|-------|
| xzc1 | 8 |

这是SQLFiddle演示

于 2013-09-08T05:05:18.540 回答
0

您是否尝试过以下方法:

SELECT   ApplicantId,point,
    SUM(CASE 
WHEN  point BETWEEN 4.00 AND 4.50 THEN 3
WHEN  point BETWEEN 3.5 AND 4.00 THEN 2 
END
) [Score]
FROM tblAcademicInfo
WHERE tblAcademicInfo.ApplicantId
GROUP BY ApplicantId, point
于 2013-09-08T04:59:54.437 回答
0

尝试这个

SELECT ApplicationId,Point,sum(Case When score IS Null Then 0 else score END) as SumScore
FROM tblAcademicInfo
GroupBy Applicatio0nId,Point,score
于 2013-09-08T05:01:28.663 回答