我有一个名为myTable的TEMPORARY表,其中包含每个测试中的参与者列表和他们的分数。测试次数是动态的。总有一个名为test_final的测试如下表所示。
--------------------------------------------------------
id_participant id_test Test_type score
---------------------------------------------------------
Partcipant1 id_test1 test 100
Partcipant1 id_test2 test 200
Partcipant1 id_test3 test 150
Partcipant1 Id_test4 Test_FINAL 300
Partcipant2 id_test1 test 500
Partcipant2 id_test2 test 500
Partcipant2 id_test3 test 250
Partcipant2 id_test4 Test_FINAL 70
Partcipant3 id_test1 test 150
Partcipant3 id_test2 test 420
Partcipant3 id_test3 test 120
Partcipant3 id_test4 Test_FINAL 200
-------------------------------------------------------
我希望有一个请求允许我转动此表,让参与者将他们的分数放在同一行,如下表所示。
--------------------------------------------------------------------------
TEST Test1 Test2 Test3 … TestN Test_final
--------------------------------------------------------------------------
Participant1 100 200 150 … scoreN 300
Participant1 500 500 250 … scoreN 70
Participant1 150 420 120 … scoreN 200
--------------------------------------------------------------------------
我想做一些像
这样的事情select t.id_participant,
case when (t.id_test = id_test1 and t.test_type='test') THEN t.score END Test1,
case when (t.id_test = id_test2 and t.test_type='test') THEN t.score END Test2,
case when (t.id_test = id_test3 and t.test_type='test') THEN t.score END Test3,
case when (t.id_test = id_test4 and t.test_type='Test_FINAL') THEN t.score END Test_Final
from mytable t
group by t.id_participant;
但它不是动态的,我不确定它会起作用。 有人可以帮忙吗?
提前致谢