查询以在mysql查询中将列值作为列名称

时间:2018-01-29 17:12:47

标签: sql mysqli mysql-python

我有两个表Case,Build和Result,如下所示 表格案例

......................................
: name  : description  : created_by  :
:.......:..............:.............:
: test1 : hello test1  : user        :
: test2 : hello test2  : user        :
:.......:..............:.............:

表格构建

.......................................
:  name  : description  : created_by  :
:........:..............:.............:
: build1 : hello build1 : user        :
: build2 : hello build2 : user        :
:........:..............:.............:

这是我的结果表

case_name   case_description    build_name  status
test1   hello test1 build1  Pass
test2   hello test2 build1  Fail
test1   hello test1 build2  Fail
test2   hello test2 build2  Pass

我需要查询以格式

获得结果
....................................................
: case_name : case_description : build1 : build2:
:...........:..................:.........:.........:
:  test1    :   hello test1    :  PASS   :  FAIL   :
:  test2    :   hello test2    :  FAIL   :  PASS   :
:...........:..................:.........:.........:

1 个答案:

答案 0 :(得分:0)

这样的事情会做到;它并不优雅但完成工作:

SELECT case_name, case_description
       MAX(CASE WHEN build_name = 'build1' THEN status ELSE '' END) AS build1,
       MAX(CASE WHEN build_name = 'build2' THEN status ELSE '' END) AS build2
FROM Result
GROUP BY case_name, case_description

如果你有两个以上的构建,你可以恰当地添加MAX语句(如果你在Python脚本中构建这个查询就很容易)。正如我所说,不是优雅,而是一种快速简便的方法来进行交叉表查询。