从多行中提取数据到单行

问题描述 投票:0回答:2

我有一个包含这些列和数据的表格:

西德 步骤 cr_时间
120 S02 24 年 7 月 8 日 08.35.19.000 上午
120 S03 24 年 7 月 8 日 01.35.19.000 下午
120 S04 24 年 7 月 9 日 02.35.19.000 下午
121 S02 24 年 7 月 9 日 09.35.19.000 上午
121 S03 24 年 7 月 9 日 02.35.19.000 下午
122 S02 24 年 7 月 10 日上午 10.35.19.000
122 S03 24 年 7 月 10 日 03.35.19.000 下午

我怎样才能以一种方式获取数据,使得一个

cid
只存在一行,并为步骤('S02','S03')显示
cr_time
- 像这样:

西德 S02_cr_时间 S03_cr_时间
120 24 年 7 月 8 日 08.35.19.000 上午 24 年 7 月 8 日 01.35.19.000 下午
121 24 年 7 月 9 日 09.35.19.000 上午 24 年 7 月 9 日 02.35.19.000 下午
122 24 年 7 月 10 日上午 10.35.19.000 24 年 7 月 10 日 03.35.19.000 下午
sql pivot
2个回答
2
投票

您可以在这里使用

PIVOT
技术。可以使用
GROUP BY
和一些聚合函数(下一个示例中的
MIN
)来完成枢轴,条件如下:

select 
    cid,
    min(case when step = 'S02' then cr_time end) S02_time,
    min(case when step = 'S03' then cr_time end) S03_time
from t
group by cid;

尝试SQL在线


0
投票

您可以使用此 SQL 代码,

SELECT 
    cid,
    MAX(CASE WHEN step = 'S02' THEN cr_time END) AS S02_cr_time,
    MAX(CASE WHEN step = 'S03' THEN cr_time END) AS S03_cr_time
FROM 
    your_table_name
GROUP BY 
    cid;
© www.soinside.com 2019 - 2024. All rights reserved.