Return 每年按任命状态划分的员工人数

Return number of Employees per year by appointment status

我有一个 table 列如下:

+-----------+--------------------+---------------+-------------+
| person_id | appointment_status | starting_date | ending_date |
+-----------+--------------------+---------------+-------------+
|     1     |          P         |   2011-11-23  | 2012-11-23  |
+-----------+--------------------+---------------+-------------+
|     2     |         JO         |   2011-11-23  | 2012-11-23  |
+-----------+--------------------+---------------+-------------+

在table的基础上,我想按状态输出某个年级注册的人数总数。基本上是这样的:

+-----------+---------------+------+
|   Status  | No. of Person | Year |
+-----------+---------------+------+
| Permanent |       5       | 2011 |
+-----------+---------------+------+
| Job Order |       16      | 2011 |
+-----------+---------------+------+
| Permanent |       10      | 2012 |
+-----------+---------------+------+
| Job Order |       19      | 2012 |
+-----------+---------------+------+

假设在2011年,大约有5名正式注册人员(雇员)和16名在职人员。然后第二年 2012,有 10 个永久订单和 19 个工作订单。

试试这个:

SELECT CASE appointment_status 
            WHEN 'P' THEN 'Permanent '
            WHEN 'JO' THEN 'Job Order'
      END  AS [Status]
      ,COUNT(person_id) AS [No. of Person]
      ,YEAR(starting_date) AS [Year]
FROM [my_table] 
GROUP BY CASE appointment_status 
            WHEN 'P' THEN 'Permanent '
            WHEN 'JO' THEN 'Job Order'
         END    
        ,YEAR(starting_date);