SQL从左表中获取左联接值

我正在处理复杂的sql查询。只是为了说明我的问题,我已简化为以下简短查询:

 select a.column1 as field1,b.column2 as field 2,c.column3 as field3,COALESCE(SUM(d.paid_amt) OVER (PARTITION BY a.some_column),0)  as amount_paid  
   from a Inner join b on b.column3=ac.olumn2
   right join c on c.column4=b.column1 
   left join d on d.column2=a.column1 and d.column5 = a.column1
   where ...//some conditions

所以我很确定这里发生了什么。我对d表上的最后一个左联接更加关注。如果d表没有匹配的记录,d.column5 = a.column1那么我没有任何结果。

但是我试图以这种方式编写查询,如果d表使用where条件d.column5 = a.column1重新调整了任何值,那么我想使用这些值,否则,如果d表中没有记录,我只想从结果中获取记录以前的联接,并获取我需要的记录。

如果联接与where条件不匹配,则消除了所有记录,这是当前查询所期望的问题。无论所在地条件是否满足,我都希望有记录。

我不太确定如何在一个查询中执行此操作。任何建议表示赞赏。

注意:@scaisEdge和@Zaynul Answer可以正常工作。但是问题是如果我在join和子句上移动条件,则数量计算。amunt计算也应该在相同条件下d.column5 = a.column1。所以我不确定如何克服这个问题:(

样品日期如下:

field1 | field2 | field3 | ampount_paid | some_column_to_match
--------------------------------------------------------------
name   | value1 | other1 | 100          | 1
name1  | value2 | other2 | 100          | 1
name2  | value3 | other3 | 100          | 2

因此,我刚刚添加了最后几列,以说明我想要的总和。我只想对some_column_to_match匹配的字段求和所以我想得到像这样的输出:

field1 | field2 | field3 | amount_paid | some_column_to_match
--------------------------------------------------------------
name   | value1 | other1 | 200          | 1
name1  | value2 | other2 | 200          | 1
name2  | value3 | other3 | 100          | 2

所以基本上计算应在所有值的总和amount_paid,其中some_column_to_match值相匹配。因此,在上面的示例中,前两列应在相同值的每个单独字段中以200的形式返回200。

scaisEdge

如果要左连接,则不应使用左连接表(d.column5 = a.column1)的列,在这种情况下,联接将成为内部联接,
在这种情况下,请为与左相关的列添加条件在对应的ON位置连接表

select a.column1
  ,b.column2
  ,c.column3
  ,d.column4 
from a Inner join b on b.column3=ac.olumn2 
right join c on c.column4=b.column1 
left join d on d.column2=a.column1  AND  d.column5 = a.column1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SQL中左联接获取

来自分类Dev

在SQL中左联接获取

来自分类Dev

左联接,左表中没有重复的行

来自分类Dev

左联接不返回左表中的所有行

来自分类Dev

在左联接中未从表A中获取所有记录

来自分类Dev

Linq中的左联接表

来自分类Dev

SQL内部联接到左联接表

来自分类Dev

我想用来从SQL Server的右表中找不到的左表中获取行的联接

来自分类Dev

如何左联接表不保留左表中的所有记录?

来自分类Dev

进行左联接时,Postgresql Null值将填充左表。为什么会这样呢?

来自分类Dev

如何编写一个SQL查询左联接2个表,该表列出左表中的所有条目,但仅列出一次?

来自分类Dev

Sql Server 中的自联接+左联接

来自分类Dev

左联接的Group_Concat变慢。我也需要左表中的所有行

来自分类Dev

从SQL Server数据库中获取最后一个值的列表,并将其左联接到视图

来自分类Dev

如何从第二个值可以为无的联接中获取对,左联接

来自分类Dev

SQL:左联接与三个表

来自分类Dev

Oracle SQL添加左联接相同的表

来自分类Dev

SQL Server左联接与3个表

来自分类Dev

使用SQL在Access中的5个表上进行内部联接和左联接

来自分类Dev

mysql左联接仅从左表中选择最高

来自分类Dev

SQL左联接具有多个值

来自分类Dev

内部联接中没有左表中的重复值?

来自分类Dev

MySQL从表B中左联接多行

来自分类Dev

从联接表中获取最高的列值

来自分类Dev

如何执行左联接,因此无论右表的位置如何,都将提取左表中的每个记录

来自分类Dev

SQL内部联接然后左联接3个表

来自分类Dev

无法从0:m关系表中的左联接获取记录

来自分类Dev

选择左联接但未在联接表中显示数据

来自分类Dev

表别名+左联接

Related 相关文章

热门标签

归档