【问题标题】:How create a group variable from the two columns如何从两列创建组变量
【发布时间】:2021-03-27 02:20:47
【问题描述】:

我有下表

我怎样才能得到下表结果:

group1 和 group2 应该合并在一列中。

【问题讨论】:

    标签: sql sql-server unpivot lateral-join


    【解决方案1】:

    您可以使用cross apply 取消透视您的数据集:

    select g.twogroups, t.year, t.quantity
    from mytable t
    cross apply (values (t.group1), (t.group2)) as g(twogroups)
    

    【讨论】:

    • 谢谢,它正在工作,但是有没有更快的方法来做到这一点?实际上,我得到了 10 个计算列,500k 行,交叉应用需要很多时间。
    【解决方案2】:

    您可以按如下方式使用union

    select group1 as twogroup, quantity, year from t
    union
    select group1, quantity, year from t
    

    【讨论】:

      【解决方案3】:

      您想要取消透视数据。我会推荐apply

      select v.twogroups, t.quantity, t.year
      from t cross apply
           (values (t.group1), (t.group2)
           ) v(twogroups);
      

      【讨论】:

      • 谢谢,它正在工作,但是有没有更快的方法来做到这一点?实际上,我得到了 10 个计算列,500k 行,交叉应用需要很多时间。
      • @ErkoTru 。 . .这最快的方法。问题很可能是处理 500 万行数据所花费的时间。例如,将它们保存在表格中通常比将它们返回到 GUI 更快。
      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      相关资源
      最近更新 更多