【问题标题】:Combine similar column data from two rows into one row将两行中相似的列数据合并为一行
【发布时间】:2013-01-02 22:36:03
【问题描述】:

我的查询结果具有以下特点:

LIDCode                         Total   Domain  Region  VSE   Version       
AB02                               15   GLOBAL  CANLA    0     6943 
AB02 - 5925 CENTRE STREET SW       31   GLOBAL  CANLA   30     6943

我从 2 个不同的表中获取数据,但我想为 LIDCode 值使用较长的条目。这是许多人的一组结果。如何将这两行组合在一起以获得组合行的总数? LIDcode 值发生变化,所以我不能用 AB02 作为常数值来比较。

我需要的结果是:

AB02 - 5925 CENTRE STREET SW       46   GLOBAL  CANLA   30     6943

【问题讨论】:

  • 你用的是什么 rdbms?
  • 能否也请给一个表定义
  • 请显示您现在正在使用的查询(以及表定义和 RDBMS 风格)。

标签: sql


【解决方案1】:

您可以尝试这样的事情(作为 SQL Server 中的示例):

select max(LIDCode) as LIDCode
      , sum(Total) as Total
      , Domain
      , Region
      , sum(VSE) as VSE -- or max(VSE)
      , Version
from Mytable
group by left(LIDCode, 4), Domain, Region, Version

您可能必须按 LIDCode 的不同子字符串(空格前的第一个子字符串等)进行分组

这是一个SQL Fiddle,可以在另一个 RDBMS 中尝试使用。

【讨论】:

  • 这最终奏效了。我不得不稍微调整一下以处理一些名为 LIDCodes 的怪异。非常感谢您在这件事上的帮助。
  • @user1944143 很高兴听到!请投票/标记为正确,以便未来的访问者知道这一点。
【解决方案2】:

你可以为 MySQL 尝试这样的事情:

SELECT LEFT(LIDCODE, 4) AS LIDCODE, SUM(TOTAL) AS total, `Domain`, `Region`, SUM(VSE) AS vse, `Version`
FROM tbl
GROUP BY LEFT(LIDCODE, 4), `Domain`, `Region`, `Version`

SQL Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-06
    • 2016-05-25
    • 2019-01-11
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多