日期:2014-05-18 浏览次数:20494 次
create table 员工表(工号 int,姓名 varchar(10))
insert into 员工表 select 1,'小明'
insert into 员工表 select 2,'小红'
insert into 员工表 select 3,'小白'
create table A区记录表(编号 int,日期 datetime,销售员 varchar(10))
insert into A区记录表 select 1,'2011-1-1','小明'
insert into A区记录表 select 2,'2011-1-2','小明'
insert into A区记录表 select 3,'2011-1-2','小红'
insert into A区记录表 select 4,'2011-1-3','小明'
create table B区记录表(编号 int,日期 datetime,销售员 varchar(10))
insert into B区记录表 select 1,'2011-1-1','小明'
insert into B区记录表 select 2,'2011-1-1','小白'
insert into B区记录表 select 3,'2011-1-2','小明'
insert into B区记录表 select 4,'2011-1-2','小白'
insert into B区记录表 select 5,'2011-1-3','小红'
go
CREATE PROCEDURE [dbo].[Find_FT_YC]
@daeStart smalldatetime , @daeEnd smalldatetime
as
begin
select c.工号,c.姓名,c.日期,
(case when d.销售员 is not null then 1 else 0 end)A区记录,
(case when e.销售员 is not null then 1 else 0 end)B区记录
from (
select a.工号,a.姓名,b.日期
from 员工表 a,(
select dateadd(d,number,@daeStart)日期 from master..spt_values
where type='p' and dateadd(d,number,@daeStart)<=@daeEnd
)b)c left join A区记录表 d on c.日期=d.日期 and c.姓名=d.销售员
left join B区记录表 e on c.日期=e.日期 and c.姓名=e.销售员
order by 3,1
end
go
exec [Find_FT_YC] '2011-1-1','2011-1-10'
/*
工号 姓名 日期 A区记录 B区记录
----------- ---------- ----------------------- ----------- -----------
1 小明 2011-01-01 00:00:00 1 1
2 小红 2011-01-01 00:00:00 0 0
3 小白 2011-01-01 00:00:00 0 1
1 小明 2011-