使用 MS Access Query 反透视或转换数据
Posted
技术标签:
【中文标题】使用 MS Access Query 反透视或转换数据【英文标题】:Unpivot or transform data using MS Access Query 【发布时间】:2020-12-28 09:18:54 【问题描述】:大师们下午好!
我希望具有 Access 和 SQL 经验(和时间)的人能够编写一些我可以在 MS Access 中使用来转换/取消透视某些数据的 SQL 代码。我想这有点像一个 unpivot。
当前表“tbl_Weekly_Forecast”的结构是这样的;
Item | A | B | C | D |
-------------------------------
61000224 | 1 | 2 | 3 | 4 |
64000123 | 25 | 25 | 25 | 25 |
66400005 | 38 | 38 | 37 | 37 |
想要的查询输出是这样的;
Item | Period | Forecast |
-------------------------------
61000224 | A | 1 |
61000224 | B | 2 |
61000224 | C | 3 |
61000224 | D | 4 |
64000123 | A | 25 |
64000123 | B | 25 |
64000123 | C | 25 |
64000123 | D | 25 |
66400005 | A | 38 |
66400005 | B | 38 |
66400005 | C | 37 |
66400005 | D | 37 |
表“tbl_Weekly_Forecast”中实际上有 24 列需要取消透视,所以我希望能够在 SQL 代码中扩展或添加列名并自己扩展。
我花了大约一天的时间尝试其他在这里提出类似问题的人的建议,但不幸的是,他们几乎没有 SQL 经验并且到目前为止都失败了。任何帮助将不胜感激!
谢谢!
【问题讨论】:
【参考方案1】:您可以简单地使用UNION ALL
,如下所示:
SELECT ITEM, 'A' PERIOD, A AS FORECAST FROM YOUR_TABLE
UNION ALL
SELECT ITEM, 'B' PERIOD, B AS FORECAST FROM YOUR_TABLE
UNION ALL
SELECT ITEM, 'C' PERIOD, C AS FORECAST FROM YOUR_TABLE
UNION ALL
SELECT ITEM, 'D' PERIOD, D AS FORECAST FROM YOUR_TABLE
【讨论】:
谢谢大力水手!我必须做的唯一调整是将 AS 放在 PERIOD 之前,然后它就像一个魅力!非常感谢,非常感谢!以上是关于使用 MS Access Query 反透视或转换数据的主要内容,如果未能解决你的问题,请参考以下文章