我有一個問題,因爲我沒有如此強大的查詢。如何查詢另一個查詢結果?
我有一個查詢與由兩個選擇查詢的工會:
SELECT em.emp_code,
em.emp_name,
COALESCE(SUM(pe.hours_allotted),0) AS hours,
pe.dated
FROM employee_master em
LEFT JOIN project_employee pe ON (pe.Emp_code = em.emp_code)
WHERE (dated >= '2011-03-14'
AND dated < '2011-03-20')
OR dated IS NULL
GROUP BY em.emp_code
UNION
(SELECT em.emp_code,
em.emp_name,
'0' AS hours,
pe.dated
FROM employee_master em
LEFT JOIN project_employee pe ON (pe.Emp_code = em.emp_code)
WHERE (dated >= '2011-03-14'
AND dated < '2011-03-20')
OR dated IS NOT NULL
GROUP BY em.Emp_code)
ORDER BY emp_name;
現在的結果集返回,例如爲:
ecode ename hours
----------------------
201 Alak basu 10
201 alak basu 0
的第一個結果是,從第一個select語句的工會,其中小時= 10 和小時= 0來自工會的第二選擇聲明。
我要的是:
ecode ename hours
----------------------------
201 alak basu 10
一樣的情況下,應該有每個ECODE只有一個結果。如何按照生態小組的方式總結小時數,使它只給出上述一個結果?
爲什麼你的數據,從而打破與不同的資本具有相同的名稱兩次? – 2011-03-18 04:45:40
我覺得這裏有一個邏輯失敗需要解決。如果員工在給定的時間範圍內有「過期」字段,則它將與兩個查詢匹配,並存在於工會的兩側。我有一種感覺,這是不是打算。這個查詢的預期效果究竟是什麼? – jdmichal 2011-03-18 04:58:55
@jdmichal實際上打算是我們有一個出勤基礎的事情,我們必須在每天工作多少小時的工作......現在我們需要知道從3月14日到3月19日..有多少人實際工作誰的工作時間超過6小時....(注意:只有那些員工會在項目員工那天工作..) – Joy 2011-03-18 08:41:42