我正在尝试多次选择,因此我有两个输出列num1和num2。我必须得到begindate和完成日期的数字 例如,在表1中,begindate是02-01-2017。从表2中我们可以看到02-01-2017在01-01-2017和01-02-2017之间。因此,beginnum的输出将为1.
表1:
begindate finishdate
02-01-2017 03-01-2017
05-02-2017 05-02-2017
表2:
num startdate enddate
1 01-01-2017 01-02-2017
2 01-02-2017 01-03-2017
预期输出:
beginnum
1
2
finishnum
1
2
执行此操作时出错:
SELECT(
SELECT num FROM table1 left outer join table2
ON
table1.begindate > table2.startdate
AND
table1.begindate <= table2.enddate) AS beginnum,
(SELECT num from table1 left outer join table2
ON
table1.finishdate> table2.startdate
AND
table1.finishdate <= table2.enddate) AS finishnum
我收到了这个错误:
错误:用作表达式的子查询返回多行。
请帮忙。
答案 0 :(得分:0)
我想你想要这样的东西:
select t1.*, t2.num
from table1 t1 left outer join
table2 t2
on t1.begindate > t2.startdate and
t1.begindate <= t2.enddate;
我不确定你的日期算术是如何工作的,为什么你只使用begindate
中的t1
列,或者比较是否是严格的不等式。但我认为这就是你想要的想法。