MySQL查询到的输出数据与表中的列标题

问题描述 投票:0回答:1

有没有在获取数据的SQL左表中所示的方式来输出在右边的图片?

enter image description here

mysql
1个回答
1
投票

如果你有一个测试的有限,静态列表,也没有用户参加考试,曾多次,你可以做这样的:

SELECT UserID, 
       SUM(Result * (Unit = "Test 1")) AS "Test 1",
       SUM(Result * (Unit = "Test 2")) AS "Test 2",
       SUM(Result * (Unit = "Test 3")) AS "Test 3" 
FROM table
GROUP BY UserID;

这是通过使用SUM在一组为所有条目与1的,并为所有其它线路的匹配测试和0(比较结果为1,用于FALSE TRUE和0)的行的权重的加权和。

编辑

作为@Nick在他的评论中指出的那样,你可以使用CASE代替乘用布尔风格去一个更易读,少依赖于实现方式:

SELECT UserID, 
       SUM(CASE WHEN Unit = "Test 1" THEN Result ELSE 0 END) AS "Test 1",
       SUM(CASE WHEN Unit = "Test 2" THEN Result ELSE 0 END) AS "Test 2",
       SUM(CASE WHEN Unit = "Test 3" THEN Result ELSE 0 END) AS "Test 3"
FROM table
GROUP BY UserID;
© www.soinside.com 2019 - 2024. All rights reserved.