简体   繁体   English

SQL 查询结果:交叉表/数据透视表

[英]SQL Query Result: Cross Tab/Pivot Table

I am using the following query:我正在使用以下查询:

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;

This produces the table:这将产生表格:

        DATA     |TEST_ID|PARAMETER_ID|INSERT_DATE
c:\desktop\image1|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:\desktop\image2|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:\desktop\image3|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

I am looking produce a table like this:我正在寻找这样的表格:

           Image Path|Result|Probability   |INSERT_DATE 
    c:\desktop\image1|Fail  |0.453289449215|2021-03-18 13:45:15
    c:\desktop\image2|Fail  |0.692115724087|2021-03-19 10:01:58
    c:\desktop\image3|Fail  |0.664975941181|2021-03-19 10:03:00

Is this table manipulation possible using SQL?是否可以使用 SQL 进行此表操作? I know I could use pd.crosstab using Python.我知道我可以通过pd.crosstab使用 pd.crosstab。

Edit: Using Microsoft SQL Server Version 13.00.4001编辑:使用 Microsoft SQL 服务器版本 13.00.4001

You seem to want conditional aggregation:您似乎想要条件聚合:

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM