【发布时间】:2018-01-09 05:04:08
【问题描述】:
我有这样的数据
compnay employee service_start_Date service_end_Date service_status
abc company david 01/01/2017 1/1/1900 in_service
abc comapny john 12/02/2016 1/1/1900 in_service
defcompany abc_1 05/12/2011 12/02/2017 regisned
ghgcompany rock 02/11/2009 04/03/2017 terminated
abc company1 david1 01/01/2017 1/1/1900 in_service
abc company david2 01/01/2017 1/1/1900 in_service
abc company2 david3 01/01/2017 1/1/1900 in_service
abc company david4 01/01/2015 1/1/2017 in_service
abc company2 david5 01/01/2017 1/1/1900 in_service
……还有很多这样的数据
当员工没有辞职/终止/过期时,默认日期设置如下 1/1/1900 当员工辞职/终止/过期时,service_end_date 被标记,所以我想要数据 比如按月和按年有多少员工加入和离开 像这样
如果我选择参数月份 1 和 2017 年,那么这个显示如下
company joiners leavers
abc company 3 1
abc company1 3 0
当我选择像第 5 个月和 2011 年时,就会显示这样
company joiners leavers
defcompany 1 0
我试过了
select e.company,count(e.EmployeeIndex) joiners,count(e.EmployeeIndex) leavers
from emp_table e
where
service_end_Date between
convert(datetime,rtrim(convert(char,@FromDate,101)),101)
and convert(datetime,rtrim(convert(char,@ToDate,101)),101)
and service_start_Date between
convert(datetime,rtrim(convert(char,@FromDate,101)),101)
and convert(datetime,rtrim(convert(char,@ToDate,101)),101)
group by e.company
this query did not show correct data..
【问题讨论】:
-
数据库中的service_start_date和service_end_date是什么数据类型?另外,您在失败的查询中作为 FromDate 和 ToDate 参数传递了什么?
-
datetime...如果我只想从 jan 然后从日期 '01/01/2017' 到日期 '01/30/2017' 获取数据,我会这样通过
标签: sql-server sql-server-2008 date