0

我需要查询其中数据来自客户和主要批准记录到映射表中的位置。如果数据可用于客户批准,它首先检查客户批准,然后它应该获取客户批准。如果没有可供客户使用的数据,那么它应该获取特定日期的主要批准记录。以下查询:

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

请帮帮我。

4

1 回答 1

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 

如果名称是唯一的,就像这样

于 2013-11-03T14:26:01.150 回答