多次选择

时间:2017-04-13 02:11:05

标签: sql postgresql

我正在尝试多次选择,因此我有两个输出列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

我收到了这个错误:
错误:用作表达式的子查询返回多行。

请帮忙。

1 个答案:

答案 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列,或者比较是否是严格的不等式。但我认为这就是你想要的想法。