有没有一种方法可以将两行转换为一排两列postgressql?

时间:2020-07-17 05:00:25

标签: postgresql case

我有一个下表,

in_out  |        date           | shift_id
02      | "2020-06-19 12:51:03" | 5311     -> this is a out
01      | "2020-06-19 10:51:03" | 5311     -> this is a in

预期结果

sign_in                          | sign_out 
2020-06-19 10:51:03              |  2020-06-19 10:51:03

尝试string_agg,inner_join

谢谢

1 个答案:

答案 0 :(得分:0)

假设in_out列标识了登录行和退出行,您可以执行以下操作:

select si."date" as sign_in
       so."date" as sign_out
from the_table si
  join the_table so 
    on so.shift_id = si.shift_id
   and so.in_out = '02'
where si.in_out = '01'

如果可以不登录而登录,则需要left join而不是内部联接。