从" mmyyyy"中提取月份名称列表用户数据

时间:2016-01-22 03:45:09

标签: sql ms-access

我有一张UserIDMonthYear的表格,其格式为2015年1月的12015或2014年3月的32014,12月的122015等等。每个UserId有几个月的多行。

查询

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

我想从table1创建一个表/查询,以下列格式输出

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中工作的任何提示也非常有价值。

1 个答案:

答案 0 :(得分:1)

您需要的只是ConcatRelated() function的副本和已保存的查询,以便从[table1]中提取月份数。[MonthYear]。使用名为[qryExtractMonthNumbers]的保存查询...

SELECT DISTINCT
    UserId,
    Val(Mid(MonthYear,1,Len(MonthYear)-4)) AS intMonth
FROM table1

...我们可以在以下查询中将其用作ConcatRelated()调用的行源...

SELECT 
    UserId,
    ConcatRelated("MonthName(intMonth)","qryExtractMonthNumbers","UserId='" & UserId & "'","intMonth") AS MonthNames
FROM (SELECT DISTINCT UserId FROM table1)

返回

UserId  MonthNames
------  ----------------------------------------------------
x100    July, September
x223    January, March, August, September, October, November