首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >努力将年数与大学生联系起来

努力将年数与大学生联系起来
EN

Stack Overflow用户
提问于 2013-11-26 01:29:08
回答 2查看 43关注 0票数 0

我有下面的视图,它显示了学生的名字,学分,我刚刚添加了一个名为have的列,全部设置为0。

代码语言:javascript
复制
+------------------+---------+------+
| StudentName      | Credits | Year |
+------------------+---------+------+
| Jon Macleod      |       0 |    0 |
| Carrie Gregory   |       0 |    0 |
| Matt Hayden      |       0 |    0 |
| Emily Scarlett   |      10 |    0 |
| Hailey Taylor    |      10 |    0 |
| Tj Davidson      |      10 |    0 |
| Alex Harry       |      20 |    0 |
| Matt Tosh        |      20 |    0 |
| Mitchell Gallant |      20 |    0 |
| Jon Harris       |      30 |    0 |
| Casey Macky      |      30 |    0 |
| James Doolittle  |      30 |    0 |
+------------------+---------+------+

我想这样做,以便当一个学生有0学分,他们是第一年。当一个学生有10个学分的时候,他们是第二年,等等。

我有下面的脚本,但不知道为什么它不工作。

代码语言:javascript
复制
CREATE OR REPLACE VIEW Year AS
SELECT S.stu_name AS StudentName, SUM(Credits) AS Credits, 0 AS Year
        FROM Student AS S JOIN Enrollment AS E
        ON S.stu_id = E.stu_id
        Case 
            when (Year = '0' and Credits = 0 then 'FirstYear'
            when (Year = '0' and Credits = 10 then 'SecondYear' 
            else Year
         end as Year
        GROUP BY S.stu_id
        ORDER BY Credits;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-26 01:56:01

试试这个:

由于我忽略了MySql不允许子查询的事实,这里是一个合适的解决方案:

代码语言:javascript
复制
CREATE OR REPLACE VIEW Year AS
   SELECT S.stu_name AS StudentName, SUM(Credits) AS Credits, 
          Case When SUM(Credits)=0 then 'First Year'
               When SUM(Credits)=10 then 'Second Year'
               When SUM(Credits)=20 then 'Third Year'
               When SUM(Credits)=30 then 'Fourth Year'
               When SUM(Credits)=40 then 'Fifth Year'
               else '' end as year
     FROM Student AS S INNER JOIN Enrollment AS E
       ON S.stu_id = E.stu_id
     GROUP BY S.stu_id
    order by E.credits;

在小提琴上看到它:http://sqlfiddle.com/#!2/776c3/1

票数 1
EN

Stack Overflow用户

发布于 2013-11-26 02:12:04

你可以试试这样的东西:

代码语言:javascript
复制
SELECT S.stu_name AS StudentName, SUM(Credits) AS Credits,
    Case Credits
        when 0 then 'FirstYear'
        when 10 then 'SecondYear' 
        else Year
     end 'year'
              FROM student AS S
    GROUP BY S.stu_id
    ORDER BY Credits;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20206930

复制
相关文章

相似问题

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