关于三个表联合查询后创建一个试图?求帮助

有一个早餐次数的试图,一个中餐次数,一个晚餐次数
图片说明

![图片说明

!图片说明

我想创建一个试图
有以下几列
年,月,工号,姓名,部门,早餐次数,中餐次数,晚餐次数

我写了几个总是错位。求帮助!谢谢大家了

先建一个有所有人员的视图吧

create or replace view v_employee
as select distinct 工号,姓名,部门
from (select 工号,姓名,部门 from v_zaopos
union all
select 工号,姓名,部门 from v_zhongpos
union all
select 工号,姓名,部门 from v_wanpos );

然后再用这个视图去关联3张表建统计次数的视图
create or replace view v_cntpos
as select b.年,b.月,a.工号,a.姓名,a.部门,sum(b.次数) as 早餐次数,sum(c.次数) as 中餐次数,sum(d.次数) as 晚餐次数
from v_employee a
left join v_zaopos b on a.工号=b.工号
left join v_zhongpos c on a.工号=c.工号
left join v_wanpos d on a.工号=d工号
group by a.工号,a.姓名,a.部门,b.年,b.月

应该很简单的,关于创建视图,你看看这篇 http://blog.csdn.net/hackage4619/article/details/54954902

最后用的自定义函数

create function dbo.pos_zaozhongwanxfmoney(@cardid int,@xfposdate smalldatetime) returns varchar(100)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + ',' + cast(xfposmoney as varchar) from pos_xfdata where cardid = @cardid and xfposdate=@xfposdate
set @str = right(@str ,len(@str)-1)
return @str
end

因为函数好像不能对视图查询 最后直接用的查询语句,希望以后可以帮到大家
select a.empno,a.cardid,a.empname,dptname,b.xfposdate,b.xfposmoney
from v_empcard a,(select cardid,xfposdate,xfposmoney=dbo.pos_zaozhongwanxfmoney(cardid,'2017-3-1')
from pos_xfdata
where xfposdate='2017-3-1'
group by cardid,xfposmoney,xfposdate) b
where a.cardid=b.cardid