[英]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 ![]() |
status![]() |
login_logout_time ![]() |
---|---|---|
24456 ![]() |
loggedin![]() |
2022-01-03 10:00:00 ![]() |
24456 ![]() |
loggedout![]() |
2022-01-03 11:20:00 ![]() |
24456 ![]() |
loggedin![]() |
2022-01-03 11:30:00 ![]() |
24456 ![]() |
loggedout![]() |
2022-01-03 13:00:00 ![]() |
24456 ![]() |
loggedin![]() |
2022-01-03 13:30:00 ![]() |
24456 ![]() |
loggedout![]() |
2022-01-03 16:10:00 ![]() |
24456 ![]() |
loggedin![]() |
2022-01-03 16:20:00 ![]() |
24456 ![]() |
loggedout![]() |
2022-01-03 19:00:00 ![]() |
i want output like this我想要这样的输出
ID ![]() |
logged_in![]() |
logged_out![]() |
---|---|---|
24456 ![]() |
2022-01-03 10:00:00 ![]() |
2022-01-03 11:20:00 ![]() |
24456 ![]() |
2022-01-03 11:30:00 ![]() |
2022-01-03 13:00:00 ![]() |
24456 ![]() |
2022-01-03 13:30:00 ![]() |
2022-01-03 16:10:00 ![]() |
24456 ![]() |
2022-01-03 16:20: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.