Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否有一种方法可以使用完全外部联接打印两个表中的所有行?_Sql_Amazon Redshift - Fatal编程技术网

Sql 是否有一种方法可以使用完全外部联接打印两个表中的所有行?

Sql 是否有一种方法可以使用完全外部联接打印两个表中的所有行?,sql,amazon-redshift,Sql,Amazon Redshift,这里有两张桌子。表A和表B我尝试使用外部联接来联接这两个表,以获取两个表中的所有行,这是生成的_表,但由于某种原因,它不起作用。最后的屏幕截图显示了我在运行查询时遇到的错误。我想要结果表中显示的输出 这是我使用的脚本 SELECT table_b.date, table_b.student, table_b.location, table_b.sub_division, table_a.part_time_pay, table

这里有两张桌子。表A和表B我尝试使用外部联接来联接这两个表,以获取两个表中的所有行,这是生成的_表,但由于某种原因,它不起作用。最后的屏幕截图显示了我在运行查询时遇到的错误。我想要结果表中显示的输出

这是我使用的脚本

SELECT table_b.date,
       table_b.student,
       table_b.location,
       table_b.sub_division,
       table_a.part_time_pay,
       table_b.days_worked
FROM table_a
FULL OUTER JOIN table_b
             ON table_a.date = table_b.date
            AND table_a.student = table_b.student; 


它正按照您指定的方式进行操作。使用
coalesce()
组合两个表中的值:

SELECT COALESCE(a.date, b.date) as date,
       COALESCE(a.student, b.student) as student,
       b.location, b.sub_division,
       a.part_time_pay, b.days_worked
FROM table_a a FULL JOIN
     table_b b
     ON a.date = b.date AND
        a.student = b.student; 
我不确定您想如何处理
位置
,以及
细分
。如果他们有不同的价值观呢?我可能认为您希望将它们置于
JOIN
条件中,然后:

SELECT COALESCE(a.date, b.date) as date,
       COALESCE(a.student, b.student) as student,
       COALESCE(a.location, b.location) as location,
       COALESCE(a.sub_division, b.sub_division) as sub_division,
       a.part_time_pay, b.days_worked
FROM table_a a FULL JOIN
     table_b b
     ON a.date = b.date AND
        a.student = b.student AND
        a.location = b.location AND
        a.sub_division = b.sub_division;

请描述“它不工作”。另外,您使用的是Postgres还是Redshift?他们是不同的。结果在我看来是正确的。您显示的结果与您的查询不匹配。正如所写的,您的查询将返回最后一行(
Hugo
),前四列中的
null
,然后在
部分时间支付中返回
3000
,在
工作日中返回另一行
null
。请解决您的问题。@GordonLinoff我已经添加了一个屏幕截图,说明为什么它不起作用。请参考那个。我使用的是amazon红移。这很有效,非常感谢,但是与日期的合并会引发错误,进行类型转换解决了问题。它应该是COALESCE(a.date::TEXT,b.date::TEXT)@murali<代码>合并()
用于日期。听起来两个表中的两列中存在类型不兼容。