我有一张UserID
和MonthYear
的表格,其格式为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中工作的任何提示也非常有价值。
答案 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