【问题标题】:join two tables, one column to multiple columns in sql在sql中连接两个表,一列到多列
【发布时间】:2021-05-30 18:52:12
【问题描述】:

我想加入两列,比如说 t1 和 t2。

t1 中的serial_number 列等于 t2 中的 3 列。我不想为每个查询编写不同的查询,而是想将它们写在一个查询中。

我最近的查询是:

select
   t1.date,
   t1.type,
   count(t1.serial_number) as qty,
from t1 left join t2 on t1.serial_number = t2.serial_number_x
where true
   and t1.age > 2
group by
   t1.date,
   t1.type

serial_number 也等于 t2 中的serial_number_x, serial_number_y, serial_number_z。 我应该如何编写查询以便在 t1 中加入 t2 的所有序列号列。

提前致谢。

【问题讨论】:

标签: sql postgresql


【解决方案1】:

您似乎在连接中发现了多个条件

select
   t1.date,
   t1.type,
   count(t1.serial_number) as qty,
from t1 left join t2 
on t1.serial_number = t2.serial_number_x
and t1.serial_number = t2.serial_number_y
and t1.serial_number = t2.serial_number_z
where 
    t1.age > 2
group by
   t1.date,
   t1.type

【讨论】:

    【解决方案2】:

    如果我理解正确,我认为您想要取消透视数据并聚合:

    select t1.date, t1.type,
           count(v.serial_number) as qty
    from t1 left join
         (t2 cross join lateral
          (values (t2.serial_number_x), (t2.serial_number_y), (t2.serial_number_z)
          ) v(serial_number)
         ) 
         on t1.serial_number = t2.serial_number
    where tt1.age > 2
    group by t1.date, t1.type;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      相关资源
      最近更新 更多