作者camille168 (凯凯)
看板Database
标题Re: [系统] ACCESS查询的问题
时间Wed Nov 28 13:45:00 2007
※ 引述《retsamsu (haha)》之铭言:
: ※ 引述《camille168 (凯凯)》之铭言:
: : 各位大大好
: : 我现在遇到了一个查询的问题
: : 我想要查每个月各个组别请假的时数
: : 我现在有个问题就是
: : 如果有一个组别当月没有请假ꄊ: : 是不会跑出那个组别的
: : 因为只有在请假时才会输入资料到资料表里
: : 所以在查时,就会面临这个月若这组没请假就不会显示他的组别
: : 可是我想要每个组别都会跑出来
: : 而没有请假的组别,他的请假时数,会自己跑出0
: : 虽然自己可以在资料表上KEY当月没请假的组别,请假时数0
: : 但这样的做法还蛮不好的
: : 想问问还有没有什麽其他的方法可以用
: : 顺便给一下我资料表里面的东西
: : 日期、姓名、假别、开始时间、结束时间、时数、组别、备注
: : 希望有大大可以解救我>"<
: UNION 没请假的组别
: union 的范例 http://www.fabalou.com/Access/Queries/unionquery.asp
你好!谢谢你的回覆
我有试了一下
但还是不行说
我想说这个合并语法
是不是要在二个资料表都有一样栏位才可以合并?
因为我是用「请假」和「组别」合并起来的
请假有的栏位就是上面那个
日期、姓名、假别、开始时间、结束时间、时数、组别、备注
但组别的栏位只有
组别、人数
我要出现的是日期(年、月分开,以月来查询当月请假的记录)
组别(输入组别来查询那组的资料)
人数(组别的人数)
总假别时数(那组当月请假的总时数)
各假别时数(假别个别算,事、病、丧、婚…)
这些都可以解决
但就是没办法解决让它出现当月没请假的组别资料
这是我原本的程式
------------------------------------------------
SELECT
Year([日期]) AS 年份,
Month([日期]) AS 月,
[上班天数]*[人数]*8 AS 应出勤总工时,
[41_group].组别, [41_group].人数,
Sum((IIf(IsNull([假别]),0,[时数]))) AS 请假,
Sum(IIf([假别] Like "公假",[时数],0)) AS 公假,
Sum(IIf([假别] Like "事假",[时数],0)) AS 事假,
Sum(IIf([假别] Like "病假",[时数],0)) AS 病假,
Sum(IIf([假别] Like "丧假",[时数],0)) AS 丧假,
Sum(IIf([假别] Like "婚假",[时数],0)) AS 婚假,
Sum(IIf([假别] Like "陪产假",[时数],0)) AS 陪产假
FROM 42_workday, 41_group
INNER JOIN 24_absencenote
ON [41_group].组别 = [24_absencenote].组别
GROUP BY Year([日期]), Month([日期]),
[上班天数]*[人数]*8, [41_group].组别,
[41_group].人数, [42_workday].月份
HAVING
(((Year([日期]))=Year(Date())) AND
((Month([日期]))=[输入月份]) AND
(([41_group].组别) Like [请输入组别] & "*") AND
(([42_workday].月份)=[输入月份]));
---------------------------------------------------
我加了union後,它是说
「在所选的两个资料表中的栏数或联合查询的栏数不相符」
那我是不是要再建一个资料表是和「请假」一样的资料表
然後把里面的值先设好,(把组别和时数0,key上)
再用一次是不是就有办法合并?
然後出现我想到的资料?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.75.220.244
※ 编辑: camille168 来自: 211.75.220.244 (11/28 13:58)
※ 编辑: camille168 来自: 211.75.220.244 (11/28 14:11)