简体   繁体   English

如何将重复值转换为 bigquery 中的列?

[英]How to convert repeated values into columns in bigquery?

I am having one table that contain 3 columns named as ID,status,login_logout_time.我有一个表,其中包含 3 个名为 ID、状态、login_logout_time 的列。

ID ID status状态 login_logout_time login_logout_time
24456 24456 loggedin登录 2022-01-03 10:00:00 2022-01-03 10:00:00
24456 24456 loggedout登出 2022-01-03 11:20:00 2022-01-03 11:20:00
24456 24456 loggedin登录 2022-01-03 11:30:00 2022-01-03 11:30:00
24456 24456 loggedout登出 2022-01-03 13:00:00 2022-01-03 13:00:00
24456 24456 loggedin登录 2022-01-03 13:30:00 2022-01-03 13:30:00
24456 24456 loggedout登出 2022-01-03 16:10:00 2022-01-03 16:10:00
24456 24456 loggedin登录 2022-01-03 16:20:00 2022-01-03 16:20:00
24456 24456 loggedout登出 2022-01-03 19:00:00 2022-01-03 19:00:00

i want output like this我想要这样的输出

ID ID logged_in登录 logged_out登出
24456 24456 2022-01-03 10:00:00 2022-01-03 10:00:00 2022-01-03 11:20:00 2022-01-03 11:20:00
24456 24456 2022-01-03 11:30:00 2022-01-03 11:30:00 2022-01-03 13:00:00 2022-01-03 13:00:00
24456 24456 2022-01-03 13:30:00 2022-01-03 13:30:00 2022-01-03 16:10:00 2022-01-03 16:10:00
24456 24456 2022-01-03 16:20:00 2022-01-03 16:20:00 2022-01-03 19:00:00 2022-01-03 19:00:00

Use below approach使用以下方法

select * except(grp)
from (
  select *, countif(status = 'loggedin') over(partition by id order by login_logout_time) grp
  from your_table
)
pivot (min(login_logout_time) for status in ('loggedin', 'loggedout'))         

if apply to sample data in your question - output is如果适用于您问题中的示例数据 - 输出是

在此处输入图像描述

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

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