结果集,包含一行的每个不同实例的一列。对于mysql

时间:2017-08-24 16:16:10

标签: mysql sql database

开发一个数据库来存储来自不同模拟模型的测试结果我得到了这个:image

请参阅“test”列指的是使用一个或多个“modelo”或模型测试的特定方案,“resultado”是该测试的结果。

事情是:我需要一个单独的查询,每个“test”返回每个“modelo”的结果,那个问题是,有一个未定义的“modelo”数。这种查询的结果如下:

image2

我该怎么做?我没有成功地尝试过小组。此外,如果可能,请列出查询中用于进一步学习的操作。

1 个答案:

答案 0 :(得分:0)

您的问题非常类似于本主题中解释的问题:Simple way to transpose columns and rows in Sql?。 从技术上讲,您需要生成转置SQL查询。

(草案)

SELECT test,
       COALESCE(MAX(CASE WHEN modello = 1 THEN resultado END), null) modello1,
       COALESCE(MAX(CASE WHEN modello = 2 THEN resultado END), null) modello2,
       COALESCE(MAX(CASE WHEN modello = 3 THEN resultado END), null) modello3
 FROM your_table
 GROUP BY test

问题是这部分

COALESCE(MAX(CASE WHEN modello = 1 THEN resultado END), null) modello1,
COALESCE(MAX(CASE WHEN modello = 2 THEN resultado END), null) modello2,
COALESCE(MAX(CASE WHEN modello = 3 THEN resultado END), null) modello3

如果模型值的数量不是非常有限,则应动态生成。如果它是有限的,那么您可以构建覆盖模型列的所有值的静态查询。