2016-11-10 4 views
-1

を使用してテーブルから時間を入力し得る:3つの選択クエリ 名の値を取得する方法このクエリをmysqlの

、時間「を入力、時間承認、

SELECT e.ENAME 'NAME', SUM(l.HOURS) 'HOURS ENTERED' FROM labors l, emps e 
WHERE l.EmpsID = e.EmpsID AND APPROVED = 'N' AND l.EmpsID = 'AGIUCL01' 
AND l.DATE_WORK BETWEEN '2016-10-30' AND '2016-11-05' 
    union 
(SELECT e.ENAME 'NAME', SUM(l.HOURS) 'HOURS APPROVED' FROM labors l, emps e 
    WHERE l.EmpsID = e.EmpsID AND APPROVED = 'A' AND l.EmpsID = 'AGIUCL01' 
    AND l.DATE_WORK BETWEEN '2016-10-30' AND '2016-11-05') 
    union 
    SELECT e.ENAME 'NAME', SUM(l.HOURS) 'HOURS REJECTED' FROM labors l,empse 
    WHERE l.EmpsID = e.EmpsID AND APPROVED = 'R' 
    AND l.EmpsID = 'AGIUCL01' 
    AND l.DATE_WORK BETWEEN '2016-10-30' AND '2016-11-05' 

クエリREJECTEDアワー:

SELECT e.ENAME 'NAME', 
SUM(CASE WHEN l.APPROVED='N' THEN l.HOURS ELSE 0 END) 'HOURS ENTERED', 
SUM(CASE WHEN l.APPROVED='A' THEN l.HOURS ELSE 0 END) 'HOURS APPROVED', 
SUM(CASE WHEN l.APPROVED='R' THEN l.HOURS ELSE 0 END) 'HOURS REJECTED' 
FROM labors l ,emps e 
where l.DATE_WORK BETWEEN '2016-10-30' AND '2016-11-05' and 
e.TERM_DATE < e.REHIRE_DATE 
or e.TERM_DATE IS NULL 
group by (e.empsid) 

私はこのテーブルからの私の結果を実行しています。

NAME     HOURS ENTERED HOURS APPROVED HOURS REJECTED 
CLAUDINEAGIUS    292.00   39.00   20.00 
TODD MICHAEL ALDAMA   292.00   39.00   20.00 
STEVE ALMGREN    292.00   39.00   20.00 
SHAWN ANDERSON    292.00   39.00   20.00 
JARETT BARNETT    292.00   39.00   20.00 

しかし、すべてのユーザーに現在のタイムラインが入力されていません。

答えて

0

あなたはSUMに条件文を使用することができます。

SELECT e.ENAME 'NAME', 
    SUM(CASE WHEN APPROVED='N' THEN l.HOURS ELSE 0 END) 'HOURS ENTERED', 
    SUM(CASE WHEN APPROVED='A' THEN l.HOURS ELSE 0 END) 'HOURS APPROVED', 
    SUM(CASE WHEN APPROVED='R' THEN l.HOURS ELSE 0 END) 'HOURS REJECTED' 
FROM labors l, emps e 
WHERE l.EmpsID = e.EmpsID 
    AND l.EmpsID = 'AGIUCL01' 
    AND l.DATE_WORK BETWEEN '2016-10-30' AND '2016-11-05' 
+0

このクエリでは、現在のタイムラインを取得する方法 –