Sql 按用户从“mmyyyy”数据中提取月份名称列表

Sql 按用户从“mmyyyy”数据中提取月份名称列表,sql,ms-access,Sql,Ms Access,我有一个带有UserID和MonthYear的表格,2015年1月为12015,2014年3月为32014,12月为122015,依此类推。每个用户标识有多行,持续数月 询问 select UserId, MonthYear from table1 order by UserId, MonthYear; 返回如下内容: x223 12015 x223 32015 x223 82015 x223 92015 x223 102015 x223 112015 . . . x100 72014

我有一个带有UserID和MonthYear的表格,2015年1月为12015,2014年3月为32014,12月为122015,依此类推。每个用户标识有多行,持续数月

询问

select UserId, MonthYear 
from table1 
order by UserId, MonthYear;
返回如下内容:

x223 12015
x223 32015
x223 82015 
x223 92015
x223 102015
x223 112015
.
.
.
x100 72014
x100 92014
我想从表1中创建一个表/查询,它以以下格式输出

x223 (February, April, May, June, July, December)
x100 (January, February...December)
这是我能做到的最好的了:

select 
    UserId, Months 
from 
    table2 
where 
    Months not in (select left(MonthYear), 1 
                   where len(MonthYear) < 6)  
group by 
    UserID, Months;

我正试图在Access中实现这一点,但在SQL中使用的任何提示都是非常有价值的。

您所需要的只是从[table1].[MonthYear]中提取月数的一份副本和一个已保存的查询。使用名为[qryExtractMonthNumbers]的已保存查询

选择不同的 用户ID, ValMidMonthYear,1号,LenMonthYear-4号 来自表1 。。。我们可以在下面的查询中将其用作ConcatRelated调用的行源

选择 用户ID, ConcatRelatedMonthNameintMonth,qryExtractMonthNumber,UserId='&UserId&',intMonth作为MonthNames 从表1中选择不同的用户标识 返回

用户ID MonthNames --- -------------------------- x100 7月,9月 x223一月、三月、八月、九月、十月、十一月
我删除了无关的数据库标签。可以为您真正使用的数据库添加标记。还有,你对这一年做了什么?我忘了说在一个单元格中插入所有缺失的月份会很好,基本上是在一列行中,我称之为月份。这在MS Access中相当复杂。是的,我想。我的猜测是以某种方式将查询结果转储到一个表中,并使用多个查询以某种方式逐步获得所需的结果。感谢您至少证实了我的担心,尽管有简单的谜题,但这并不是一件小事。您应该首先删除monthyear的最后4个字符,以仅获得月份,如1、12等。然后您需要使用解码或大小写将1指定为1月,2指定为2月等。因此,现在您有了用户ID和月份。然后,您需要在access中搜索group_concat或Listag的替代方案。正如Gordon所说,在MS Access中执行此操作很复杂,但您可以尝试一下,并让我们知道您在执行此操作时是否面临问题。这很有效。非常令人惊讶的是,这些查询太短了。非常感谢。