[英]Select one row only if a value exists in another
我需要一个查询,其中数据来自客户和主要批准记录,并映射到映射表中。 它首先检查是否获得客户批准,然后再获取客户批准。 如果客户没有可用的数据,则应获取特定日期的主要批准记录。 以下查询:
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
请帮帮我。
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
如果名称是唯一的,则类似这样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.