这是另一个与我之前在my post here发布的帖子有关的问题,但问题不同 .
在我之前的帖子中,我询问如何创建交叉表查询,该查询将根据4年版权年度输出列 . 答案非常好,但现在我面临着另一个挑战 .
要明确这里的数据:
ID CallNo CopyrightYear
1 AH 2000
2 AB 2000
3 BC 2001
4 AH 2000
5 ZA 2005
6 BC 2001
7 AP 2003
10 ZA 2006
11 DA 2009
12 DA 2010
13 RA 1999
14 WE 1997
15 HK 1996
16 AG 2011
基于上一篇文章,sql语句应该是这样的:
TRANSFORM Count(tab1.ID) AS CountOfID
SELECT tab1.CallNo, Count(tab1.ID) AS [Total Of ID]
FROM table1 AS tab1
GROUP BY tab1.CallNo
PIVOT CStr(Int(([CopyrightYear])/5)*5)+' to '+CStr(Int(([CopyrightYear])/5)*5+4);
输出是:
CallNo 1995 to 1999 2000 to 2004 2005 to 2009 2010 to 2014
AB 1
AG 1
AH 2
AP 1
BC 2
DA 1 1
HK 1
RA 1
WE 1
ZA 2
我的问题是如何结合1999年以后及2010年以上版权年度的所有结果 . 我想要的新列输出如下:
CallNo 1999 below 2000 to 2004 2005 to 2009 2010 above
AB 1
AG 1
AH 2
AP 1
BC 2
DA 1 1
HK 1
RA 1
WE 1
ZA 2
这意味着,如果版权年份低于1999年,如1980年,则将计入“1999年以下”栏目 . 与上述2010年相同,如果有像2014年,2016年甚至2020年的版权年份,则该值将计入“2010年以上”栏目 .
1 回答
您应该尝试使用为枢轴转换提供的数据更加直接,但可能需要更多时间:
创建一个像这样的表并进行转换:
使用union查询创建表,如下所示:
使用该查询交叉选项卡查询,如下所示:
在MS-Access 2010上测试过......