数不了。每个部门的员工,并在尊重经验栏填写计数

时间:2016-08-18 16:00:17

标签: sql sql-server database

我有两个表员工和部门,员工表模式(Eid,Ename,DOJ,Sal,部门ID)和部门模式(部门ID,Dname)。所以我想要的输出是数。每个部门的员工和根据经验。

输出:

dept    |0-5yrs|5-10yrs|10-15yrs
HR      |  4   |    9  |  0       
Account |  2   |    3  |  1

我的意思是产出是4名员工在人力资源部门有不到5年的经验,9人有超过5年和不到10年的经验,0有10到15年的经验

1 个答案:

答案 0 :(得分:0)

您可以在Microsoft SQL中使用数据透视表,如下所示:

select  p.DName, p.Under5, p.From5To10, p.MoreThan10
from    (
    select  d.DName, case when datediff(day, e.DOJ, getdate()) / 365 < 5 then 'Under5' when datediff(day, e.DOJ, getdate()) / 365 > 10 then 'MoreThan10' else 'From5To10' end as ExperienceBucket
    from    Employee    e
    join    Department  d on e.[Dept Id] = d.[Dept Id]
        ) as s
pivot   (
    count(ExperienceBucket)
    for ExperienceBucket in (Under5, From5To10, MoreThan10)
        ) as p