2016-07-25 48 views
0

我有一個employees表和hire_date列,我試圖做的查詢是計算1995年和1996年僱用的僱員人數。1995年有自己的專欄和1996年有它自己的列:SQL - 基於2個限制的行計數

______________ 
|  |  | 
| 1995 | 1996 | 
|______|______| 
| 2 | 3 | 
|______|______|` 

僞代碼:

display COUNT of rows WHERE hire_date LIKE '%95', display COUNT of rows WHERE hire_date LIKE '%96' 

任何人都可以指導我,我怎麼能做到這一點?

回答

1

有了這個查詢,你只能訪問一次員工表

select 
    sum(case TO_CHAR(hire_date, 'YYYY') when '1995' then 1 end) as "1995", 
    sum(case TO_CHAR(hire_date, 'YYYY') when '1996' then 1 end) as "1996" 
    from employees 
where hire_date between date '1995-01-01' and date'1996-12-31'; 
+0

我希望能在'hire_date'做了比較,這種方法,但TO_CHAR轉換需要:'TO_CHAR(聘用日期,「YYYY」 )' – ethane

+0

@Ethan我更新了答案,以防Hire_date是日期。 – vercelli

+0

請注意,'date '1996-12-31''評估爲凌晨0:00,因此不包括最後一天的剩餘時間 - 所以此代碼假設'hire_date'總是設置爲0:00 am, 12月31日。 –

0
SELECT (SELECT COUNT(*) FROM employees WHERE hire_date = '1995') "1995", 
     (SELECT COUNT(*) FROM employees WHERE hire_date = '1996') "1996" 
FROM dual;