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