按具有 2 个不同值的两行数据汇总/分组

Posted

技术标签:

【中文标题】按具有 2 个不同值的两行数据汇总/分组【英文标题】:Roll up/group by two rows of data with 2 different values 【发布时间】:2021-09-05 11:51:00 【问题描述】:

我希望标题有点解释性,但假设我有如下数据:

     Num1          Val1           Type             Code           String1          String 2
     1X2           GG             X11              123            NULL             NULL
     1X2           GG             X11              123            Test String      Test String

我希望实现的是这样的:

  Num1          Val1           Type             Code           String1          String 2
  1X2           GG             X11              123            Test String      Test String

我试过类似的东西:

  Select Num1, Val1, Type, Code, MAX(String1) as String1, and MAX(String2) as String2
  From table
  Group Num1, Val1, Type, Code

我只是用 MAX 测试它,因为我不知道这样的东西是否可以用 STRING 来实现,我将它与数值一起使用,但有没有办法将两行组合起来,如上所示?

【问题讨论】:

您的代码应该可以工作。 您的 GROUP 语句中有一个额外的 AND,但没有 BY 【参考方案1】:
    额外的与 GROUP BY(非 GROUP)
  Select Num1, Val1, Type, Code, MAX(String1) as String1, MAX(String2) as String2
  From table
  Group BY Num1, Val1, Type, Code

您的代码将适用于所示情况。但是,如果您有以下情况,它也会给您相同的答案:

 Num1          Val1           Type             Code           String1          String 2
     1X2           GG             X11              123         NULL            Test String
     1X2           GG             X11              123         Test String     NULL

根据您的具体要求,UPDATE 语句也可能是一种选择。

【讨论】:

以上是关于按具有 2 个不同值的两行数据汇总/分组的主要内容,如果未能解决你的问题,请参考以下文章

聚合具有特定值的两行之间的行

Django:显示不同值的对象属性

Laravel:如何通过选择两列进行分组具有不同的值

SQL - 按一个字段分组并汇总另一个字段?

按 4 个不同级别和总数字字段分组

如何对来自不同表MySQL的两列求和