当前位置: 代码迷 >> Sql Server >> sql统计人事信息
  详细解决方案

sql统计人事信息

热度:110   发布时间:2016-04-24 09:39:46.0
sql统计人事信息,十万火急

------解决思路----------------------
SELECT
    [部门]
    ,SUM(1)[总人数]
    ,SUM(CASE[学历]WHEN'中专'THEN 1 ELSE 0 END)[中专]
    ,SUM(CASE[学历]WHEN'本科'THEN 1 ELSE 0 END)[本科]
    ,SUM(CASE[学历]WHEN'大专'THEN 1 ELSE 0 END)[大专]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())<=18 THEN 1 ELSE 0 END)[18岁以下]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())BETWEEN 19 AND 25 THEN 1 ELSE 0 END)[18岁至25岁]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())BETWEEN 26 AND 35 THEN 1 ELSE 0 END)[25岁至35岁]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())>35 THEN 1 ELSE 0 END)[35岁以上]
FROM
    [数据表]
GROUP BY
    [部门]
UNION ALL
SELECT
    '合计'
    ,SUM(1)[总人数]
    ,SUM(CASE[学历]WHEN'中专'THEN 1 ELSE 0 END)[中专]
    ,SUM(CASE[学历]WHEN'本科'THEN 1 ELSE 0 END)[本科]
    ,SUM(CASE[学历]WHEN'大专'THEN 1 ELSE 0 END)[大专]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())<=18 THEN 1 ELSE 0 END)[18岁以下]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())BETWEEN 19 AND 25 THEN 1 ELSE 0 END)[18岁至25岁]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())BETWEEN 26 AND 35 THEN 1 ELSE 0 END)[25岁至35岁]
    ,SUM(CASE WHEN DATEDIFF(YEAR,[出生日期],GETDATE())>35 THEN 1 ELSE 0 END)[35岁以上]
FROM
    [数据表]

你这样试试
  相关解决方案