我有一个包含这些列和数据的表格:
西德 | 步骤 | 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 下午 |
您可以在这里使用
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在线
您可以使用此 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;