Office中国论坛/Access中国论坛

标题: [求助]一个查询 [打印本页]

作者: sjds333    时间: 2004-5-4 23:40
标题: [求助]一个查询
已做好一统计查询:
部门      人数小计      男计数      女计数      20以下      20-40岁      40岁以上
技术         3                 1             2             1               2               
生产         3                 2             1             1               2               
行政         8                 4             4             1               4                 3
质检         3                 3                                                               3

想在查询中实现在记录的最后一行加上合计得到如下结果:

合计         17               10            7             3               8                 6

请教这个查询如何做!谢谢!               

作者: sjds333    时间: 2004-5-4 23:49
重写一下:
部门   人数小计   男计数   女计数   20岁以下   20-40   40岁以上
技术   3             1           2          1              2          0
生产   3             2           1          1              2          0
行政   8             4           4          1              4          3
质检   3             3           0          0              0          3
想查询中实现最后一行有部门以外各字段值的合计即:
合计   17           10         7          3               8          6
作者: zhuyiwen    时间: 2004-5-5 00:35
把你的查询的SQL语句贴出来
作者: sjds333    时间: 2004-5-5 01:15
标题: [求助]
朱总您好,我这统计查询是用5个分查询得来,现我想在这个统计查询记录的最后能体现出各字段的合计,我不会做。我还是把库传上来吧![attach]4545[/attach]
作者: sjds333    时间: 2004-5-5 01:19
即在统计查询记录的结果最后能有一个合计项纵向体现除部门外其它字段的合计数,我见其它高手做过,可我就是试不出来。谢谢!
作者: zhuyiwen    时间: 2004-5-5 01:56
[attach]4546[/attach]
作者: sjds333    时间: 2004-5-5 02:51
谢谢朱总!我明白了。
作者: sjds333    时间: 2004-5-5 03:26
顺便问请教朱总:统计查询的结果能否根据表1用一个查询做出(我用了6个)。谢谢!
作者: zhuyiwen    时间: 2004-5-5 05:40
用了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

[attach]4547[/attach]
作者: sjds333    时间: 2004-5-5 06:14
由衷感谢!!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3