如何合并为单行表返回多个数据的子查询?

Posted

技术标签:

【中文标题】如何合并为单行表返回多个数据的子查询?【英文标题】:How to merge Subquery which returns multiple data for single row of table? 【发布时间】:2019-08-24 11:11:02 【问题描述】:

我的表格包含 startDate 和 endDate 列,所以如果我拿它的不同,它之间有好几天,我可以用我的一个自定义表格来做。

select btwnDates from CustomDateTable where btwnDates between '2019-01-5' and '2019-01-7';
2019-01-5
2019-01-6
2019-01-7

现在,我想将此输出与表的其他列合并。

我的输入表有值:

titles       description       startDate        endDate 
homelone     homeloan_policy   2018-06-07      2018-06-09  
carlone      carloan_policy    2019-07-18      2019-07-18

输出应该是这样的:

titles       description     startDate        endDate          Day  
homelone   homeloan_policy   2018-06-07      2018-06-09     2018-06-07 
homelone   homeloan_policy   2018-06-07      2018-06-09     2018-06-08 
homelone   homeloan_policy   2018-06-07      2018-06-09     2018-06-09 
carlone    carloan_policy    2019-07-18      2019-07-18     2019-07-18

我发现一个 json_extract_array_element_text 函数的作用相同,但它适用于 json 值,也尝试过用于 redshift 中的数组,但没有运气。

我是 redshift 及其查询的新手。

【问题讨论】:

【参考方案1】:

你似乎想要一个join

select t.*, cd.btwnDates
from input t join
     customdatetable cd
     on cd.btwnDates >= t.startdate and
        cd.btwnDates >= t.enddate ;

【讨论】:

以上是关于如何合并为单行表返回多个数据的子查询?的主要内容,如果未能解决你的问题,请参考以下文章

无法更新表中的列 它返回单行子查询返回多个

零基础带你学习MySQL—单行子查询和多行子查询(二十二)

sql子查询

oracle入门之对表数据查询

子查询(嵌套子查询)

ORA-01427 单行子查询返回多行 - 如何解决?