1

我想根据季度将行更改为 cloms。

我的示例表如下

Student name    subject standard    marks   quarter
Harry   Maths   class1  19  q1
Harry   Maths   class1  19  q2
Harry   Maths   class1  19  q3
Harry   Maths   class1  19  q4
Harry   science class1  18  q1
Harry   science class1  18  q2
Harry   science class1  18  q3
Harry   science class1  18  q4
Harry   social  class1  19  q1
Harry   social  class1  19  q2
Harry   social  class1  19  q3
Harry   social  class1  19  q4
Raj     Maths   class1  19  q1
Raj    Maths    class1  19  q2
Raj    Maths    class1  19  q3
Raj    Maths    class1  19  q4
Raj    science  class1  18  q1
Raj    science  class1  18  q2
Raj    science  class1  18  q3
Raj    science  class1  18  q4
Raj    social   class1  19  q1
Raj    social   class1  19  q2
Raj    social   class1  19  q3
Raj    social   class1  19  q4

输出应该是

Student name    subject standard    marks   quarter subject marks1  quarter1        subject marks1  quarter2    subject marks1  quarter3
Harry   Maths   class1  19  q1  Maths   19  q2  Maths   19  q3      Maths   19  q4
Harry   science class1  18  q1  science 18  q2  science 18  q3  science 18  q4
Harry   social  class1  19  q1  social  19  q2  social  19  q3      social  19  q4
Raj Maths   class1  19  q1  Maths   19  q2  Maths   19  q3  Maths   19  q4
Raj science class1  18  q1  science 18  q2  science 18  q3  science 18  q4
Raj social  class1  19  q1  social  19  q2  social  19  q3  social  19  q4

我尝试了很多方法,比如使用 where='q1' 组合两个 select 语句,但是它给出了多行。请帮助我

请不要介意我的表格格式希望你能理解

4

2 回答 2

0

沿着这些线将不同季度的名称、主题、标准加入表格:-

SELECT *
  FROM tbl t1
  JOIN tbl t2
    ON t1.name = t2.name and t1.subject = t2.subject and t1.standard = t1.standard
  JOIN tbl t3
    ON t2.name = t3.name and t2.subject = t3.subject and t2.standard = t2.standard
 WHERE t1.quarter = 'q1' and t2.quarter = 'q2' and t3.quarter = 'q3'
于 2013-07-25T06:25:00.927 回答
0

如果我的输出正确,请尝试

SELECT student_name,
       standard,
         'q1' quarter1,
         MIN(CASE WHEN quarter = 'q1' THEN subject END) subject1,
         MIN(CASE WHEN quarter = 'q1' THEN marks   END) marks1,
         'q2' quarter2,
         MIN(CASE WHEN quarter = 'q2' THEN subject END) subject2,
         MIN(CASE WHEN quarter = 'q2' THEN marks   END) marks2,
         'q3' quarter3,
         MIN(CASE WHEN quarter = 'q3' THEN subject END) subject3,
         MIN(CASE WHEN quarter = 'q3' THEN marks   END) marks3,
         'q4' quarter4,
         MIN(CASE WHEN quarter = 'q4' THEN subject END) subject4,
         MIN(CASE WHEN quarter = 'q4' THEN marks   END) marks4
  FROM Table1
 GROUP BY student_name, standard, subject

样本输出:

| 学生名 | 标准 | 第一季 | 主题1 | 标记1 | 第二季 | 主题2 | 标记2 | 第三季 | 主题3 | MARKS3 | 第四季度 | 主题4 | MARKS4 |
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -
| 哈利 | 1 级 | q1 | 数学 | 19 | q2 | 数学 | 19 | q3 | 数学 | 19 | 第四季度 | 数学 | 19 |
| 哈利 | 1 级 | q1 | 科学 | 18 | q2 | 科学 | 18 | q3 | 科学 | 18 | 第四季度 | 科学 | 18 |
| 哈利 | 1 级 | q1 | 社会 | 19 | q2 | 社会 | 19 | q3 | 社会 | 19 | 第四季度 | 社会 | 19 |
| 拉吉 | 1 级 | q1 | 数学 | 19 | q2 | 数学 | 19 | q3 | 数学 | 19 | 第四季度 | 数学 | 19 |
| 拉吉 | 1 级 | q1 | 科学 | 18 | q2 | 科学 | 18 | q3 | 科学 | 18 | 第四季度 | 科学 | 18 |
| 拉吉 | 1 级 | q1 | 社会 | 19 | q2 | 社会 | 19 | q3 | 社会 | 19 | 第四季度 | 社会 | 19 |

这是SQLFiddle演示

于 2013-07-25T06:34:36.303 回答