我需要一个查询,其中数据来自客户端和主要批准记录到映射表中。如果数据可供客户批准,首先检查客户端批准,然后它应获取客户端批准。如果客户端没有可用的数据,那么它应该获取特定日期的主要批准记录。以下查询:
SELECT * FROM employee_map
WHERE DATE = '2013-11-13 00:00:00'
AND (WORKDAIRY_APPROVAL='ClientApproval' XOR WORKDAIRY_APPROVAL='MainApproval')
为第13个日期提供2行输出,但如果我将日期更改为20,我将获得主要批准。如果主要和客户批准都可用,我只需要客户批准数据。
------------------------------- ---------------------------------------
MAP_ID CATEGORY EMP_ID DATE EMP_NAME EMP_SAL APPROVAL
------------------------------------------
1 DIRECT 1 11/13/2013 JOHN 5,000 MainApproval
2 DIRECT 1 11/13/2013 JOHN 5,000 ClientApproval
3 DIRECT 2 11/20/2013 RAJ 2,000 MainApproval
4 DIRECT 3 11/21/2013 Ram 1,000 ClientApproval
请帮帮我。
答案 0 :(得分:0)
SELECT * FROM employee_map em
JOIN
(SELECT EMP_NAME, MAX(APPROVAL) AS APPROVAL FROM employee_map em
WHERE DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-13 00:00:00'
AND (WORKDAIRY_APPROVAL='ClientApproval' XOR WORKDAIRY_APPROVAL='MainApproval')) A
ON A.EMP_NAME=em.EMP_NAME and A.APPROVAL = em.APPROVAL
如果姓名是唯一的
,这样的话