2011-08-10 17 views
1

私は「EMPLOYEE」テーブルを1つ持っています。私は 'emp_no'を数える必要があるので、異なる制限に基づいてそれぞれの集約を持つ複数の列があります。以下の出力を得るために書く方法がわからない。1つのテーブルから複数の集計を出力する

SELECT DEP_NO, COUNT(EMP_NO) Active 
FROM EMPLOYEE 
WHERE STATUS = 'active' 

SELECT DEP_NO, COUNT(EMP_NO) "On Leave" 
FROM EMPLOYEE 
WHERE STATUS = 'on leave' 


dep_no| Active On Leave Female Male 
------|------------------------------ 
1 | 236  10  136 100 
2 | 500  26  250 250 
3 | 130  2  80  50 
4 | 210  7  60 150 

答えて

0

一つの可能​​な答えは完璧だ

SELECT DEP_NO, SUM(CASE WHEN STATUS = 'active' THEN 1 ELSE 0 END) AS Active, 
       SUM(CASE WHEN STATUS = 'on leave' THEN 1 ELSE 0 END) AS [On Leave], 
       SUM(CASE WHEN STATUS = 'female' THEN 1 ELSE 0 END) AS Female, 
       SUM(CASE WHEN STATUS = 'male' THEN 1 ELSE 0 END) AS Male 
FROM EMPLOYEE 
GROUP BY DEP_NO 
+0

ありがとうSUM + CASEを使用することです。とにかく、私が2番目のテーブルを追加したい場合は、結果を結合しますか? UNIONは行の数を複製するだけです。 –

+0

私の最後のコメントを見つけました。ありがとう –

関連する問題