1

クロス集計クエリを作成したい次のデータがあります。

 ID   CallNo     CopyrightYear
 1    AH         2000
 2    AB         2000
 3    BC         2000
 4    AH         2002
 5    ZA         2005
 6    BC         2001
 7    AP         2003

これは私が現在持っているクロス集計クエリです:

 TRANSFORM Count(Table1.[ID]) AS CountOfID
 SELECT Table1.[CallNo], Count(Table1.[ID]) AS [Total Of ID]
 FROM Table1
 GROUP BY Table1.[CallNo]
 PIVOT Table1.[CopyrightYear];

だから私の質問は、2000年から2002年、2003年から2005年などのように著作権年をどのようにグループ化できるかということです...

推測される結果:

CallNo      2000 to 2002    2003 to 2005
AB              1   
AH              2   
AP                              1
BC              2   
ZA                              1
4

2 に答える 2

1

これがあなたの答えです:

TRANSFORM Count(tab1.[ID]) AS CountOfID
SELECT tab1.[CallNo], Count(tab1.[ID]) AS [Total Of ID]
FROM tab1
GROUP BY tab1.[CallNo]
PIVOT CStr(Int(([CopyrightYear]+1)/3)*3-1)+' to '+CStr(Int(([CopyrightYear]+1)/3)*3+1);

実際、あなたはただピボットすることができますInt(([CopyrightYear]+1)/3)*3-1。CStr変換は、主に美容目的で行われます。

52000年から2004年、2005年から2009年などの場合、式は次のようになります( 4年の範囲の値であることに注意してください)。

TRANSFORM Count(tab1.[ID]) AS CountOfID
SELECT tab1.[CallNo], Count(tab1.[ID]) AS [Total Of ID]
FROM tab1
GROUP BY tab1.[CallNo]
PIVOT CStr(Int(([CopyrightYear])/5)*5)+' to '+CStr(Int(([CopyrightYear])/5)*5+4)
于 2013-03-07T05:04:20.513 に答える
0
SELECT CallNo,
CASE WHEN COUNT(Copyrightyear =>2000 AND <=2002) AS '2000 to 2002', COUNT(Copyrightyear => 2003 AND <=2005) AS '2003 to 2005'
FROM Table1
GROUP BY CallNo

これがうまくいくかどうかはわかりません。

于 2013-03-07T05:16:04.503 に答える