Sql 如何将多个记录跨存储到一个数据记录中?

Sql 如何将多个记录跨存储到一个数据记录中?,sql,ms-access,vba,Sql,Ms Access,Vba,目前,我的Access表中有如下数据: Cat| Sept 1 2016 Cat| Sept 2 2016 Cat| Sept 3 2016 Bobcat| Sept 1 2016 Bobcat| Sept 2 2016 Bobcat| Sept 3 2016 Bobcat| Sept 5 2016 Bobcat| Sept 6 2016 Bobcat| Sept 7 2016 我需要数据显示为: Cat| Sept 1 2016| Sept 2 2016| Sept 3 2

目前,我的Access表中有如下数据:

Cat|    Sept 1 2016
Cat|    Sept 2 2016
Cat|    Sept 3 2016
Bobcat| Sept 1 2016
Bobcat| Sept 2 2016
Bobcat| Sept 3 2016
Bobcat| Sept 5 2016
Bobcat| Sept 6 2016
Bobcat| Sept 7 2016
我需要数据显示为:

Cat| Sept 1 2016| Sept 2 2016| Sept 3 2016
Bobcat| Sept 1 2016| Sept 2 2016| Sept 3 2016|Null| Sept 5 2016| Sept 6 2016| Sept 7 2016
字段名为Name Date1、Date2、date3…Date31。我一直在使用这种格式


当我尝试交叉表查询时,我得到的是日期2016年9月1日| 2016年9月2日| 2016年9月3日成为我的字段名,然后它显示计数或最大值、最后值、最小值等。但是,我需要这些日期显示为数据。我该怎么做呢?

实际上,您可以使用交叉表指定可以在非数字数据上运行的最大值或最小值。但是,正如您所看到的,列名重复其相应的值

将MAXt.Date转换为maxOfDate 选择t.User 从表数据 按用户分组 支点t.UDate; -用户2016年9月1日2016年9月2日2016年9月3日2016年9月5日2016年9月6日2016年9月7日 -山猫2016年9月1日2016年9月2日2016年9月3日2016年9月5日2016年9月6日2016年9月7日 -类别2016年9月1日2016年9月2日2016年9月3日

为获取不同的列名称,请考虑使用IN查询,然后运行交叉选项卡:

选择t.ID、t.用户、t.日期, “Day”和DaycDate.Date作为DayCol 来自表数据; -ID用户UDate DayCol -1类2016年9月1日第1天 -2类2016年9月2日第2天 -3类2016年9月3日第3天 -4山猫2016年9月1日第1天 -5山猫2016年9月2日第2天 -6山猫2016年9月3日第3天 -7山猫2016年9月5日第5天 -8山猫2016年9月6日第6天 -9山猫2016年9月7日第7天 将MAXq.Date转换为maxOfDate 选择q.User 来自TableDataQ 按q.用户分组 枢轴q.DayCol; -用户第1天第2天第3天第5天第6天第7天 -山猫2016年9月1日2016年9月2日2016年9月3日2016年9月5日2016年9月6日2016年9月7日 -类别2016年9月1日2016年9月2日2016年9月3日 最后,您会注意到交叉表不包括没有相应数据覆盖的连续日期,例如第4天。幸运的是,您可以在PIVOT…in子句中指定列:

将MAXq.Date转换为maxOfDate 选择q.User 来自TableDataQ 按q.用户分组 “第1天”、“第2天”、“第3天”、“第4天”、“第5天”中的轴q.DayCol, “第6天”、“第7天”、“第8天”、“第9天”、“第10天”, “第11天”、“第12天”、“第13天”、“第14天”、“第15天”, “第16天”、“第17天”、“第18天”、“第19天”、“第20天”, “第21天”、“第22天”、“第23天”、“第24天”、“第25天”, ‘第26天’、‘第27天’、‘第28天’、‘第29天’、‘第30天’、‘第31天’; -用户第1天第2天第3天第4天第5天第6天。。。 -山猫2016年9月1日2016年9月2日2016年9月3日2016年9月5日2016年9月6日。。。 -类别2016年9月1日2016年9月2日2016年9月3日
一个快速修复方法,虽然它不是虚构的,是复制和粘贴转置,或者使用转置函数在VBA中创建转置。我考虑过这种方法,但这是需要每月生成的排序报告的一部分,我可能不在场。请显示更多示例数据。如果有多个类别,会发生什么?好了。它将按名称进行排序/分组,然后我需要显示上一个月的日期,因此我对域名称没有问题,可以在do Date31上,在不存在的日期上使用null date值。我明白了。不久前我们有一个非常相似的问题,但我没有发现。我建议你浏览过去4-6个月的精彩答案!非常彻底。哇,谢谢你,先生!我要试试这个!工作得很有魅力!谢谢你的冻糕!