SQL:SQL查询中两处的Where子句
我有一个独特的要求,即我必须从多个表中获取数据,并且我不能执行多个SQL查询 共有两个表,SQL:SQL查询中两处的Where子句,sql,postgresql,Sql,Postgresql,我有一个独特的要求,即我必须从多个表中获取数据,并且我不能执行多个SQL查询 共有两个表,Table1和Table2 表1中的列为: C1 C2 C3 ---------------- 1 1 10 2 3 20 3 5 30 4 8 40 C1 C2 C3 --------------- 1 1 10 2 3 20 3 5 30 4 8 40
Table1
和Table2
表1中的列为:
C1 C2 C3
----------------
1 1 10
2 3 20
3 5 30
4 8 40
C1 C2 C3
---------------
1 1 10
2 3 20
3 5 30
4 8 40
表2中的列为:
C1 C2 C3
----------------
1 1 10
2 3 20
3 5 30
4 8 40
C1 C2 C3
---------------
1 1 10
2 3 20
3 5 30
4 8 40
查询逻辑上是这样的:(这在语法上没有运行)
请忽略查询的语法
我的问题是,我在两个地方应用了where子句,这就是我必须做的,因为我无法将内部where拉出,因为这最终会妨碍我的结果集,在这种情况下,别名3将不正确
除了将查询分为两个查询之外,我还有其他选择吗
我越来越
SQL错误[42601]:错误:在“where”处或附近出现语法错误
在我的playpen中,我将无法共享真正的查询。但是要点是相同的。您可以使用filter()
子句进行聚合:
select t1.c1 as alias1,
sum(t1.c2) filter (where t1.c3>20) as alias2,
t1.c2 as alias3,
t2.c2 as alias4
from Table1 t1
left join Table2 t2 on t1.c1=t2.c2
where t1.c1 in (1,2,3)
group by ....
将单个(单个)列放在括号之间是完全没有用的。求和(当t1.c3>20,则t1.c2否则0结束时)作为别名2
?