生成报告的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