【问题标题】:Sql how to group column without losing dataSql如何在不丢失数据的情况下对列进行分组
【发布时间】:2018-07-13 16:55:05
【问题描述】:

我使用的是 SQL Server 2014,我想在不丢失数据的情况下对我的行进行分组。

这是我目前所拥有的:

我想要实现的是:

【问题讨论】:

  • 您如何知道第 2 行和第 3 行与第 1 行相关而不是第 4 行?通常,您只需最小/最大需要将需要拉在一起的列并按其他列分组。然而 dateFacture 是不够的,而且似乎 codeTaxe1 需要成为 group by 的一部分;但是第 2 行和第 3 行的列中缺少数据...所以简单地说,您无法提供所提供的信息;因为我们无法判断第 2 行和第 3 行是属于第 1 行还是第 4 行。无法保证数据库中的顺序,因此无法正常工作。
  • 要对行进行分组,首先需要定义唯一性/分组条件/列。我不清楚是哪一个。请列出列。

标签: sql sql-server group-by row


【解决方案1】:

这很棘手。基本上,这个想法是一个不可旋转和重新旋转,但有一个转折:

select t.id,
       max(case when which = 'codeTaxe1' then val end) as codeTaxe1,
       max(case when which = 'codeTaxe2' then val end) as codeTaxe2,
       . . . 
from t cross apply
     (select v.*, row_number() over (order by (select null)) as seqnum
      from (values (t.codeTaxe1, 'codeTaxe1'), (t.codeTaxe2, 'codeTaxe2'), . . .
           ) v(val, which)
      where val is not null
     ) tt
group by t.id, seqnum;

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多