Access SQL:按自定义案例排序,按月透视

Posted

技术标签:

【中文标题】Access SQL:按自定义案例排序,按月透视【英文标题】:Access SQL: order by customized cases and pivot by month 【发布时间】:2014-04-02 20:33:09 【问题描述】:

我在 Access 中编写了一个交叉表“A”,它从另一个表“B”中选择 2 个文本列和 2 个数字列、月份和帖子。

一段代码是这样的……

Select B.xx...
From B
Group by B.xx...
Pivot B.Month;

...如果月份属于同一年,则效果很好,但是由于月份是滚动的,因此当年份结转时,例如月份是 October, November, December, January, February,顺序保持为 B.Month ASC 01, 02, 10, 11, 12 我希望它按顺序旋转喜欢 10 11 12 01 02

更新:我解决了主要问题,但现在我想 1. 将订单更改为 10/2013 至 3/2014 2. 将标题改为 10 到 3

TOPIC        SUB-TOPIC   1/2014   10/2013   11/2013   12/2013   2/2014  3/2014
language     english      86        88         90       82        88      90
language     french       70        77         75       79        82      80
mathematics  geometry     xx        xx         xx       xx        xx      xx 
mathematics  calculus     xx        xx         xx       xx        xx      xx 

【问题讨论】:

不是说它会解决问题,但 Access 不支持 case/when 语法 为什么年份和月份在两列中?是以前的一列吗? @Brad A 和 B 中只有月份列,我尝试通过传入来添加年份,但这不起作用,因为枢轴只在月份有效 但是你如何得到一年的月份?是否有一列具有正确的 date/time 数据类型? @Brad 是的,在另一个表中,比如 D,其中包含所有原始数据。我已经提取了月份(date_column)用于最终表A。我试图提取年份(date_column)但最后枢轴只能旋转一列...... 【参考方案1】:

创建一个同时包含年份和月份的表达式,并在数据透视表中使用它。

类似Pivot (year & format(month,"00"))

或者,如果您在某个字段中有完整的日期,例如`Pivot Format (Date,"yyyy/mm/dd")

提醒一下,Year、Date 和 Month 可能是保留字,您可能需要不同的字段名称 - 不确定,但可能

【讨论】:

这是一个很好的建议,但如果我同时调整年份和月份,那么该列的列名会显示什么? “Pivot (year & format(month, '00") As Monthnum 工作吗?不,我只有从一般数据中提取的月份部分,因为这是唯一需要的。是的,保留月份和年份。跨度> 我认为你的建议应该可行 - As Monthnum 不应该改变任何东西。至于你会得到什么 - 列应该看起来像 201309 .. 201310 .. 201311 .. 201312 .. 201401 .. 201402 等等 - 试试看你得到什么,并应用你喜欢的任何格式首先是年份,然后是月份。

以上是关于Access SQL:按自定义案例排序,按月透视的主要内容,如果未能解决你的问题,请参考以下文章

python按自定义顺序排序字典列表[重复]

按自定义字典顺序对字符串进行排序

php 标签按自定义字段排序标记排序

MongoDB按自定义字段排序集合

按自定义模式排序列

查询自定义帖子类型并按自定义帖子类型排序