生成报告的sql查询中的案例问题

生成报告的sql查询中的案例问题,sql,Sql,我有一张这样的桌子: leave_id applicant from_date to_date type status 1 a 2/7/2014 5/7/2014 Annual Approve 2 Basudev 2/7/2014 5/7/2014 Annual Approve 3 Basudev 2/7/2014 5/7/2014 Casual Approve 4

我有一张这样的桌子:

leave_id  applicant  from_date   to_date    type   status
1             a       2/7/2014   5/7/2014  Annual  Approve
2           Basudev   2/7/2014   5/7/2014  Annual  Approve
3           Basudev   2/7/2014   5/7/2014  Casual  Approve
4           Basudev   2/7/2014   5/7/2014  Sick    Approve
5             a       2/7/2014   5/7/2014  Casual  Approve
6             a       2/7/2014   5/7/2014  Sick    Approve
applicant  annual  casual  sick
   a         2       4      6
Basudev      1       4  
applicant  annual  casual  sick
   a         2    
   a                 4
   a                        6
Basudev              2
Basudev                     3  
我想要一份这样的报告:

leave_id  applicant  from_date   to_date    type   status
1             a       2/7/2014   5/7/2014  Annual  Approve
2           Basudev   2/7/2014   5/7/2014  Annual  Approve
3           Basudev   2/7/2014   5/7/2014  Casual  Approve
4           Basudev   2/7/2014   5/7/2014  Sick    Approve
5             a       2/7/2014   5/7/2014  Casual  Approve
6             a       2/7/2014   5/7/2014  Sick    Approve
applicant  annual  casual  sick
   a         2       4      6
Basudev      1       4  
applicant  annual  casual  sick
   a         2    
   a                 4
   a                        6
Basudev              2
Basudev                     3  
我正在使用这个查询

select a.applicant,
       case when a.type='Annual' 
         Then (DATEDIFF(to_date,from_date))+1 
         Else '' 
       End as Annual_consume,
       case when a.type='Casual' 
         Then (DATEDIFF(to_date,from_date))+1 
         Else '' 
       End as Casual_consume,
       case when a.type='Sick' 
         Then (DATEDIFF(to_date,from_date))+1 
         Else '' 
       End as Sick_consume 
from leaves a 
order by applicant
但它显示的数据如下:

leave_id  applicant  from_date   to_date    type   status
1             a       2/7/2014   5/7/2014  Annual  Approve
2           Basudev   2/7/2014   5/7/2014  Annual  Approve
3           Basudev   2/7/2014   5/7/2014  Casual  Approve
4           Basudev   2/7/2014   5/7/2014  Sick    Approve
5             a       2/7/2014   5/7/2014  Casual  Approve
6             a       2/7/2014   5/7/2014  Sick    Approve
applicant  annual  casual  sick
   a         2       4      6
Basudev      1       4  
applicant  annual  casual  sick
   a         2    
   a                 4
   a                        6
Basudev              2
Basudev                     3  

请帮助解决此问题。

谢谢您的回答。您能告诉我如何从另一个表中联接另一列吗。我有另一个表名,如下所示。申请人年度分配Basudev 18现在我想添加年度分配列,并使用join query向上查询。谢谢您的回答。您能告诉我如何从另一个表中联接另一列吗。我有另一个表名,如下所示。申请人年度分配Basudev 18现在,我想使用join query在上面的查询中添加年度分配列。类似于:选择a.applicator,b.annual分配总和大小写,当a.type='annual'时,然后选择DATEDIFFa.to.\u date,a.from_date+1结束为年度消费,当a.type='Casual'时选择总和大小写,然后选择DATEDIFFa.to\u date,a、 从a.type='Sick'开始的日期+1结束为临时消费,将a.type='Sick'时的情况加总,然后是DATEFIFA.到a.type,a.from\U date+1结束为病假消费从假期a加入假期a分配b.APPLIENT=b.APPLIENT订单由a.APPLIENT组由a.APPLIENT,b.ENALLOCATE
select a.applicant,
       sum(case when a.type='Annual' Then (DATEDIFF(to_date,from_date))+1 end) as Annual_consume,
       sum(case when a.type='Casual' Then (DATEDIFF(to_date,from_date))+1 end) as Casual_consume,
       sum(case when a.type='Sick' Then (DATEDIFF(to_date,from_date))+1 end) as Sick_consume 
from leaves a 
group by a.applicant
order by a.applicant