【问题标题】:Add another different column based on previous column根据上一列添加另一个不同的列
【发布时间】:2020-12-31 01:52:41
【问题描述】:

假设我在数据库中有一个这样的表

Name  Day  VALUE1  VALUE2
========================
A     mon      1       2
A     fri      2       2

我想要它喜欢它

Name  VALUE1(mon)  VALUE2(mon)  VALUE1(fri)  VALUE2(fri)
=====================================================
A        1             2            2            2

我可以做这样的事情吗?如果可以的话,请告诉我如何使用查询进行此操作

【问题讨论】:

  • 你总是只期待周一和周五吗?
  • 是的,仅适用于周一和周五

标签: mysql sql postgresql


【解决方案1】:

您可以使用数据透视查询:

SELECT
    Name,
    MAX(CASE WHEN DAY = 'mon' THEN VALUE1 END) AS "Value1(mon)",
    MAX(CASE WHEN DAY = 'mon' THEN VALUE2 END) AS "Value2(mon)",
    MAX(CASE WHEN DAY = 'fri' THEN VALUE1 END) AS "Value1(fri)",
    MAX(CASE WHEN DAY = 'fri' THEN VALUE2 END) AS "Value2(fri)"
FROM yourTable
GROUP BY Name;

【讨论】:

    【解决方案2】:

    您可以按如下方式进行自我完全外连接:

    Select coalesce(m.day,f.day) as day,
           M.value1 as monval1,
           M.value2 as monval2,
           F.value1 as frival1,
           F.value2 as frival2
      From your_table m full outer join your_table f
        On m.name = f.name 
       And m.day = 'mon' and f.day = 'fri'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2023-02-22
      • 2022-12-15
      相关资源
      最近更新 更多