Oracle SQL-CASE语句在逻辑上不需要时返回多行

Oracle SQL-CASE语句在逻辑上不需要时返回多行,sql,oracle,date,case,between,Sql,Oracle,Date,Case,Between,我有两张桌子: 命令 霍尔 因此,对于我当前的查询: SELECT o.O_NO, o.O_DATE, o.O_CO, o.O_TYPE, h.START_DATE, h.END_DATE, CASE WHEN o.O_DATE BETWEEN h.START_DATE AND h.END_DATE THEN 'Head' ELSE 'Line' END AS HOL_TYPE FROM Order o LEFT

我有两张桌子:

命令

霍尔

因此,对于我当前的查询:

SELECT o.O_NO, o.O_DATE, o.O_CO, o.O_TYPE, h.START_DATE, h.END_DATE, 
       CASE WHEN o.O_DATE BETWEEN h.START_DATE AND h.END_DATE 
            THEN 'Head' 
            ELSE 'Line'
       END AS HOL_TYPE
FROM Order o
LEFT JOIN HOL h ON o.O_LIST = h.H_LIST
这是输出:

O_NO  O_DATE      O_CO  O_TYPE START_DATE  END_DATE   HOL_TYPE
1653  07/07/2015  12    P      29/01/2014  30/06/2014 Line
1653  07/07/2015  12    P      01/10/2014  30/09/2017 Head
但我的预期产出是:

O_NO  O_DATE      O_CO  O_TYPE START_DATE  END_DATE   HOL_TYPE
1653  07/07/2015  12    P      01/10/2014  30/09/2017 Head

因为特别是O_日期介于条件之间,只应返回一行。

日期
条件包括在
连接中

SELECT o.O_NO, o.O_DATE, o.O_CO, o.O_TYPE, h.START_DATE, h.END_DATE, 
CASE WHEN o.O_DATE BETWEEN h.START_DATE AND h.END_DATE 
        THEN 'Head' 
        ELSE 'Line'
END AS HOL_TYPE as HOL_TYPE
FROM Order o
LEFT JOIN HOL h ON o.O_LIST = h.H_LIST AND o.O_DATE BETWEEN h.START_DATE AND h.END_DATE
O_NO  O_DATE      O_CO  O_TYPE START_DATE  END_DATE   HOL_TYPE
1653  07/07/2015  12    P      01/10/2014  30/09/2017 Head
SELECT o.O_NO, o.O_DATE, o.O_CO, o.O_TYPE, h.START_DATE, h.END_DATE, 
CASE WHEN o.O_DATE BETWEEN h.START_DATE AND h.END_DATE 
        THEN 'Head' 
        ELSE 'Line'
END AS HOL_TYPE as HOL_TYPE
FROM Order o
LEFT JOIN HOL h ON o.O_LIST = h.H_LIST AND o.O_DATE BETWEEN h.START_DATE AND h.END_DATE