Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

联合查询的问题,请各位大虾给我看一下SQL错在哪里?

王一  发表于:2009-10-05 09:57:39  
复制

“当年传染病数据”和“去年传染病数据”中,得出1张查询表,格式如下(要进行2年数据对比,其中有一部分为共有疾病,一部分为不同,如没有这种疾病数则显”0“):
疾病编号 08年数 09年数
病毒性肝炎 4 13
出 血 热 1 1
肺结核       76 32
风疹        0 1
淋    病 37 11
流行性腮腺炎 1 5
梅毒           2 3
其它感染性腹泻病144 95
手足口病 4 21
细菌性痢疾 47 25
猩 红 热 4 1
麻疹         1 0
急性出血性结膜炎2 0

 

SQL如下:

PARAMETERS [请输入月份] Text ( 255 );
SELECT 疾病编号, Sum(去年) AS 08年数, Sum(当年) AS 09数
FROM SELECT 疾病编号, Format([诊断时间],"mm") & "月" AS 月份, Count(ID) AS 当年,0 as 去年
FROM 当年传染病数据
GROUP BY 疾病编号, Format([诊断时间],"mm") & "月"
UNION seLECT 疾病编号, Format([诊断时间],"mm") & "月" AS 月份, 0 AS 当年,Count(ID) as 去年
FROM 去年传染病数据
GROUP BY 疾病编号, Format([诊断时间],"mm") & "月"]. AS [%$##@_Alias]
WHERE (((月份)=[请输入月份] & "月"))
GROUP BY 疾病编号;

点击下载此附件

 

Top
点燃一支烟 发表于:2009-10-05 11:20:26
SELECT 疾病编号, Sum([08]) AS 08年数, Sum([09]) AS 09年数
FROM [SELECT 疾病编号,疾病编号之Count as 08, 0 as 09
FROM (SELECT 去年传染病数据.疾病编号, Count(去年传染病数据.疾病编号) AS 疾病编号之Count
FROM 去年传染病数据
GROUP BY 去年传染病数据.疾病编号)
UNION SELECT all 疾病编号, 0,疾病编号之Count
FROM (SELECT 当年传染病数据.疾病编号, Count(当年传染病数据.疾病编号) AS 疾病编号之Count
FROM 当年传染病数据
GROUP BY 当年传染病数据.疾病编号)]. AS [%$##@_Alias]
GROUP BY 疾病编号;

点燃一支烟 发表于:2009-10-05 11:22:58
点燃一支烟 发表于:2009-10-05 11:25:25

这里没给你去分月,你按此思路改一下就可以



蒋元根 发表于:2009-10-05 11:32:21

给你修改了一下,供参考

点击下载此附件

点燃一支烟 发表于:2009-10-05 12:06:12
PARAMETERS [请输入月份] Text ( 255 ) 这个要不要无所谓,如果你是要统计指定月份的话,查询中找不到[请输入月份]的话自然会提示你输入参数的,你可根据上述思路改下,统计到月就是,呵呵


点燃一支烟 发表于:2009-10-05 16:31:05
SELECT [%$##@_Alias].疾病编号, Sum([%$##@_Alias].[08年数1]) AS 08年数, Sum([%$##@_Alias].[09年数1]) AS 09年数
FROM [SELECT 疾病编号, 疾病编号之count之Sum as 08年数1 ,0 as 09年数1
FROM (SELECT 疾病编号, Sum(疾病编号之count) AS 疾病编号之count之Sum
FROM (SELECT 疾病编号,疾病编号之count
FROM (SELECT 去年传染病数据.疾病编号, Count(去年传染病数据.疾病编号) AS 疾病编号之Count
FROM 去年传染病数据
GROUP BY 去年传染病数据.疾病编号, Month([诊断时间])
HAVING (((Month([诊断时间]))=[请输入月份])))
UNION SELECT all 疾病编号,0
FROM (SELECT 去年传染病数据.疾病编号
FROM 去年传染病数据
GROUP BY 去年传染病数据.疾病编号))
GROUP BY 疾病编号)
UNION SELECT all 疾病编号,0,疾病编号之count之Sum
FROM (SELECT 疾病编号, Sum(疾病编号之count) AS 疾病编号之count之Sum
FROM (SELECT 疾病编号,疾病编号之count
FROM (SELECT 当年传染病数据.疾病编号, Count(当年传染病数据.疾病编号) AS 疾病编号之Count
FROM 当年传染病数据
GROUP BY 当年传染病数据.疾病编号, Month([诊断时间])
HAVING (((Month([诊断时间]))=[请输入月份])))
UNION SELECT all 疾病编号,0
FROM (SELECT 当年传染病数据.疾病编号
FROM 当年传染病数据
GROUP BY 当年传染病数据.疾病编号))
GROUP BY 疾病编号)]. AS [%$##@_Alias]
GROUP BY [%$##@_Alias].疾病编号;点击下载此附件

点燃一支烟 发表于:2009-10-05 16:31:59
6楼是给出按指定月的算法查询

总记录:7篇  页次:1/1 9 1 :