具有临时表

时间:2018-06-13 21:22:42

标签: mysql dynamic pivot multiple-columns rows

我有一个名为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;

但它不是动态的,我不确定它会起作用。 有人可以帮忙吗?

提前致谢

0 个答案:

没有答案