|
用了3个查询,一个自定义函数
表1_交叉1:
TRANSFORM Count(表1.ID) AS ID之计数
SELECT 表1.部门, Count(表1.ID) AS 人数小计
FROM 表1
GROUP BY 表1.部门
PIVOT 表1.姓别;
表1_交叉2:
TRANSFORM Count(表1.ID) AS ID之计数
SELECT 表1.部门
FROM 表1
GROUP BY 表1.部门
PIVOT AgeClass(年龄);
表1_统计:
SELECT 表1_交叉1.部门, 表1_交叉1.人数小计, 表1_交叉1.男, 表1_交叉1.女, 表1_交叉2.[20岁以下], 表1_交叉2.[20-30岁], 表1_交叉2.[30-40岁], 表1_交叉2.[40岁以上]
FROM 表1_交叉1 INNER JOIN 表1_交叉2 ON 表1_交叉1.部门 = 表1_交叉2.部门
UNION SELECT "合计", SUM(表1_交叉1.人数小计), SUM(表1_交叉1.男), SUM(表1_交叉1.女), SUM(表1_交叉2.[20岁以下]), SUM(表1_交叉2.[20-30岁]), SUM(表1_交叉2.[30-40岁]), SUM(表1_交叉2.[40岁以上])
FROM 表1_交叉1 INNER JOIN 表1_交叉2 ON 表1_交叉1.部门 = 表1_交叉2.部门;
AgeClass:
Public Function AgeClass(ByVal n As Integer) As String
If n <= 20 Then
AgeClass = "20岁以下"
ElseIf n <= 30 Then
AgeClass = "20-30岁"
ElseIf n <= 40 Then
AgeClass = "30-40岁"
Else
AgeClass = "40岁以上"
End If
End Function
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|