繁体   English   中英

仅当另一行中存在值时才选择一行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM