【发布时间】:2015-08-18 21:04:20
【问题描述】:
我在使用左外连接的报告 SQL 中遇到问题。
SELECT * FROM xx.aa
LEFT OUTER JOIN xx.yyy
ON aa.some_column_1 = yyy.some_column_1
AND aa.some_column_2 = yyy.some_column_2
AND aa.some_column_3 = yyy.some_column_3
AND yyy.some_year = '2015'
AND yyy.some_column_4 IS NOT NULL
AND yyy.some_column_4 > 0
WHERE aa.some_column_1 = '1234'
AND aa.some_column_2 = 'SOME_VALUE'
AND aa.end_date >= TO_DATE('01-JAN-2015','DD-MON-YYYY')
AND aa.start_date <= TO_DATE('31-DEC-2015','DD-MON-YYYY')
AND (aa.some_column_3 = 'SOME_VALUE')
表 aa
some_column_1 some_column_2 some_column_3 start_date end_date
1234 SOME_VALUE SOME_VALUE 1/1/2011 6/30/2014
1234 SOME_VALUE SOME_VALUE 7/1/2014 6/30/2015
表格年年
some_column_1 some_column_2 some_column_3 some_column_4 some_year
1234 SOME_VALUE SOME_VALUE 444 2015
但是,左外连接中的最后两个条件 IS NOT NULL 和 > 0 仅应在匹配多于 1 行且至少有一行满足这两个条件时应用。否则会出问题。
有什么想法吗?
【问题讨论】:
-
样本数据和预期输出会有所帮助。
-
听起来你需要一个子查询和
CASE。您应该发布整个 SQL 语句,因为我们看不到任何aa和location。你可以设为a.f1, b.f1. c.f3等。我们不需要长名字 -
请查看更新谢谢!
-
@user3224907 更新中的示例数据在哪里?
-
添加样本数据@FutbolFan