各位大侠,我是个新人,求教一个问题,急
现在有4个表,每个表都有关联,我想根据我需要显示的字段内容把4个表相关联的地方整合成一个表,每个表的查询字段和我需要显示的字段内容如下:
Hrms_Dpt部门表 关联字段:DptId 部门ID 需要显示该字段内容的字段:DptName部门名称Hrms_Emp员工表 关联字段:EmpId员工ID DptId部门ID 需要显示该字段内容的字段:
EmpNo员工编号
EmpSex性别
EmpName员工姓名Com_EmpCard员工饭卡信息表 关联字段:EmpId员工ID CardId饭卡IDPos_AccTransDetailBuzhu员工补助消费信息表,该表内存有所有员工的消费流水账,每消费一次就会产生一条记录,补助余额就会自动扣减,有消费时间记录,我想通过以上4个表查询出所有员工月末补助余额。
关联字段:CardId饭卡ID EmpId员工ID AccTransDay 消费时间 CardMoneyValue补助余额不知道我说的清不清楚,望各位大神解答,该怎么写查询语句才能得到我想要的结果?我觉得应该按照每月时间最大值来查?
现在有4个表,每个表都有关联,我想根据我需要显示的字段内容把4个表相关联的地方整合成一个表,每个表的查询字段和我需要显示的字段内容如下:
Hrms_Dpt部门表 关联字段:DptId 部门ID 需要显示该字段内容的字段:DptName部门名称Hrms_Emp员工表 关联字段:EmpId员工ID DptId部门ID 需要显示该字段内容的字段:
EmpNo员工编号
EmpSex性别
EmpName员工姓名Com_EmpCard员工饭卡信息表 关联字段:EmpId员工ID CardId饭卡IDPos_AccTransDetailBuzhu员工补助消费信息表,该表内存有所有员工的消费流水账,每消费一次就会产生一条记录,补助余额就会自动扣减,有消费时间记录,我想通过以上4个表查询出所有员工月末补助余额。
关联字段:CardId饭卡ID EmpId员工ID AccTransDay 消费时间 CardMoneyValue补助余额不知道我说的清不清楚,望各位大神解答,该怎么写查询语句才能得到我想要的结果?我觉得应该按照每月时间最大值来查?
*
from (( Pos_AccTransDetailBuzhu a join Com_EmpCard b on a.CardId饭卡ID=b.CardId饭卡ID)
join Hrms_Emp c on b.EmpId员工ID=c.EmpId员工ID)
join Hrms_Dpt d on c.DptId 部门ID =d.DptId 部门ID
a.DptName
,b.EmpNo
,b.EmpName
,c.CardId
,COUNT(varchar(7),AccTransDay,120) AS 月份
,SUM(CardMoneyValue) AS 每月补助余额
FROM Hrms_Dpt AS a
INNER JOIN Hrms_Emp AS b ON b.DptId=a.DptId
INNER JOIN Com_EmpCard AS c ON c.EmpId=b.EmpId
INNER JOIN Pos_AccTransDetailBuzhu AS d ON d.CardId=c.CardId AND c.EmpId=d.EmpId
GROUP BY
a.DptName
,b.EmpNo
,b.EmpName
,c.CardId
,COUNT(varchar(7),AccTransDay,120)按以上方法自己调整显示格式
a.DptName
,b.EmpNo
,b.EmpName
,c.CardId
,d.AccTransDay
,d.CardMoneyValue
FROM Hrms_Dpt AS a
INNER JOIN Hrms_Emp AS b ON b.DptId=a.DptId
INNER JOIN Com_EmpCard AS c ON c.EmpId=b.EmpId
inner join Pos_AccTransDetailBuzhu AS d ON d.CardId=c.CardId AND c.EmpId=d.EmpId
inner join
(
select CardId,EmpId,max(AccTransDay) AccTransDay from Pos_AccTransDetailBuzhu group by CardId,EmpId,convert(varchar(7),AccTransDay,120)
) e on d.CardId = e.CardId and d.EmpId = e.EmpId and d.AccTransDay = e.AccTransDay