表格分数
身份证分数 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 有一行。
身份证分数 Year_1 Year_2 Year_3
1 ---- A ------ 1 ------ 0 ------ 0
1 ---- C ------ 0 ------ 0 ------ 1
2 ---- B ------ 1 ------ 1 ------ 1
但是否也可以删除分数列并将分数放在不同的年份列中,如下所示?
身份证 Year_1 Year_2 Year_3
1 ---- A ------ 0 ------ C
2 ---- B ------ B ------ B
============================================= ==========================
我在使用答案中的命令后遇到的一个问题,我失去了分数。 当表是这样的,一年内有多个分数:
身份证分数 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
我不会得到如下结果,但会出现一个分数并失去其他分数:
身份证 Year_1 Year_2 Year_3
1 ---- A,B ---- 0 ------ C
2 ---- B ------ B ------ B
最佳答案
试试这个
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
关于Mysql连接具有相同值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18657682/