1

表分数

ID 分数 Year_1 Year_2 Year_3

1 ---- A ------ 1 ------ 0 ------ 0

1 ---- C ------ 0 ------ 0 ------ 1

2 ---- B ------ 1 ------ 1 ------ 0

2 ---- B ------ 0 ------ 0 ------ 1

首先,我想在分数相同时加入 ID 上的行,以便在下面的示例中 ID 2 有一行。

ID 分数 Year_1 Year_2 Year_3

1 ---- A ------ 1 ------ 0 ------ 0

1 ---- C ------ 0 ------ 0 ------ 1

2 ---- B ------ 1 ------ 1 ------ 1

但是是否也可以删除分数列并将分数放在不同的年份列中,如下所示?

ID 年_1 年_2 年_3

1 ---- A ------ 0 ------ C

2 ---- B ------ B ------ B

==================================================== ========================

在答案中使用命令后我遇到的一个问题,我失去了分数。当表格是这样并且一年有多个分数时:

ID 分数 Year_1 Year_2 Year_3

1 ---- A ------ 1 ------ 0 ------ 0

1 ---- B ------ 1 ------ 0 ------ 0

1 ---- C ------ 0 ------ 0 ------ 1

2 ---- B ------ 1 ------ 1 ------ 0

2 ---- B ------ 0 ------ 0 ------ 1


我不会得到如下结果,但会出现一个分数并松散其他分数:

ID 年_1 年_2 年_3

1 ---- A,B ---- 0 ------ C

2 ---- B ------ B ------ B

4

1 回答 1

0

尝试这个

SELECT id
      ,score
      ,Max(year_1) year_1
      ,Max(year_2) year_2
      ,Max(year_3) year_3
 FROM scores
 GROUP BY id,score

第二个:

SELECT id
      ,group_concat(year_1) year_1
      ,group_concat(year_2) year_2
      ,group_concat(year_3) year_3
  FROM (
    SELECT id
         , CASE WHEN Max(year_1)=1 THEN Max(score) END AS year_1
         , CASE WHEN Max(year_2)=1 THEN Max(score) END AS year_2
         , CASE WHEN Max(year_3)=1 THEN Max(score) END AS year_3
      FROM scores
     GROUP BY id ,score
) as tbl2
GROUP BY id
于 2013-09-06T13:37:32.697 回答