SQL查询结果:跨页签/数据透视表



我正在使用以下查询:

SELECT t.DATA,
t.TEST_ID,
t.INSERT_DATE,
CASE
WHEN t.PARAMETER_ID = 1 THEN 'Image Path'
WHEN t.PARAMETER_ID = 2 THEN 'Result'
WHEN t.PARAMETER_ID = 3 THEN 'Probability'
END as PARAMETER_ID
FROM (SELECT t.*, count(*) over (partition by TEST_ID) AS cnt
FROM db1 AS t
WHERE PARAMETER_ID = 1
OR PARAMETER_ID = 2
OR PARAMETER_ID = 3
) t
WHERE cnt >= 3;

这就产生了表格:

DATA     |TEST_ID|PARAMETER_ID|INSERT_DATE
c:desktopimage1|326803 |Image Path  |2021-03-18 13:45:15
Fail             |326803 |Result      |2021-03-18 13:45:15
0.453289449215   |326803 |Probability |2021-03-18 13:45:15
c:desktopimage2|326810 |Image Path  |2021-03-19 10:01:58
Fail             |326810 |Result      |2021-03-19 10:01:58
0.692115724087   |326810 |Probability |2021-03-19 10:01:58
c:desktopimage3|326811 |Image Path  |2021-03-19 10:03:00
Fail             |326811 |Result      |2021-03-19 10:03:00
0.664975941181   |326811 |Probability |2021-03-19 10:03:00

我正在寻找一张这样的表格:

Image Path|Result|Probability   |INSERT_DATE 
c:desktopimage1|Fail  |0.453289449215|2021-03-18 13:45:15
c:desktopimage2|Fail  |0.692115724087|2021-03-19 10:01:58
c:desktopimage3|Fail  |0.664975941181|2021-03-19 10:03:00

使用SQL可以进行这种表操作吗?我知道我可以使用Python来使用pd.crosstab

编辑:使用Microsoft SQL Server 13.00.4001版

您似乎想要条件聚合:

SELECT t.TEST_ID, t.INSERT_DATE,
MAX(CASE WHEN t.PARAMETER_ID = 1 THEN T.DATA END) as Image_Path,
MAX(CASE WHEN t.PARAMETER_ID = 2 THEN T.DATA END) as Result,
MAX(CASE WHEN t.PARAMETER_ID = 3 THEN T.DATA END) as Probability
FROM db1 AS t
GROUP BY TEST_ID, INSERT_DATE;

最新更新