【问题标题】:SQL - Pivot or Unpivot?SQL - Pivot 还是 Unpivot?
【发布时间】:2017-06-01 09:13:11
【问题描述】:

另一个时间,另一个问题。我有下表:

|assemb.|Repl_1|Repl_2|Repl_3|Repl_4|Repl_5|Amount_1|Amount_2|Amount_3|Amount_4|Amount_5|
|---------------------------------------------------------------------------------------|
|4711001|111000|222000|333000|444000|555000|       1|       1|       1|       1|       1|
|---------------------------------------------------------------------------------------|
|4711002|222000|333000|444000|555000|666000|       1|       1|       1|       1|       1|
|---------------------------------------------------------------------------------------|

这是我需要的:

|Article|Amount|
|--------------|
| 111000|     1|
|--------------|
| 222000|     2|
|--------------|
| 333000|     2|
|--------------| 
| 444000|     2|
|--------------| 
| 555000|     2|
|--------------|
| 666000|     1|
|---------------

Repl_1 到 Repl_10 是组件的替换物品。我可以拥有最多 10 篇代表文章的 n 个程序集。最后,我需要概述所有包含所有程序集的文章。

谢谢。

最好的问候 贝吉塔

【问题讨论】:

  • 是的。谢谢。尝试 CROSS APPLY 是我需要的。现在?我怎样才能给你投票?还是我要删除我的问题?
  • 你可以用你的答案编辑你的帖子:)

标签: sql sql-server sql-server-2008 pivot unpivot


【解决方案1】:

这可能是使用UNION ALL 实现它的最快方法。但是,我建议您规范化您的表格

SELECT Article, SUM(Amount) FROM (
    SELECT Repl_1 AS Article, SUM(Amount_1) AS Amount FROM #Test GROUP BY Repl_1
    UNION ALL
    SELECT Repl_2 AS Article, SUM(Amount_2) AS Amount FROM #Test GROUP BY Repl_2
    UNION ALL
    SELECT Repl_3 AS Article, SUM(Amount_3) AS Amount FROM #Test GROUP BY Repl_3
    UNION ALL
    SELECT Repl_4 AS Article, SUM(Amount_4) AS Amount FROM #Test GROUP BY Repl_4
    UNION ALL
    SELECT Repl_5 AS Article, SUM(Amount_5) AS Amount FROM #Test GROUP BY Repl_5
) tbl GROUP BY Article

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多