完全连接两个表,其中包含三个合并列和一些唯一列

时间:2018-06-14 18:16:06

标签: sql database

下面的任何帮助都会很棒,我已经尝试了好几天才能做到正确。

根据以下屏幕截图,我有两张桌子:

Join tables

我需要的是拥有一个包含单个PeriodPropertyIDTransactionCodeID列的新表格。

必须使用两个表格中的值列BalanceBFBudgetAmountActualAmountRevisedBudget来填充这些列,其中任何一个列都显示在任一行中上表。

因此,两个表中的所有值都必须出现,并且可以在适用的情况下合并为一行。

我尝试了FULL OUTER JOIN和其他联接类型,但没有运气

关于如何做到这一点的任何想法?

如果我可以追加(coalesce?)那么前三列然后FULL OUTER JOIN这两个表值列是否有效?不知道怎么做。

编辑:

我使用以下代码:

SELECT         
    dbo.PropertyBudgets.Period, 
    dbo.PropertyBudgets.PropertyID, 
    dbo.PropertyBudgets.TransactionCodeID, 
    dbo.AccountBalances.BalanceBf, 
    dbo.PropertyBudgets.BudgetAmount, 
    dbo.PropertyBudgets.ActualAmount, 
    dbo.PropertyBudgets.RevisedBudget
FROM
    dbo.AccountBalances 
FULL OUTER JOIN
    dbo.PropertyBudgets ON dbo.AccountBalances.PropertyID = dbo.PropertyBudgets.PropertyID 
                        AND dbo.AccountBalances.TransactionCodeID = dbo.PropertyBudgets.TransactionCodeID 
                        AND dbo.AccountBalances.Period = dbo.PropertyBudgets.Period
WHERE        
    (NOT (dbo.AccountBalances.BalanceBf = 0)) OR
    (NOT (dbo.PropertyBudgets.BudgetAmount = 0)) 
    OR (NOT (dbo.PropertyBudgets.ActualAmount = 0)) 
    OR (NOT (dbo.PropertyBudgets.RevisedBudget =0))`

我得到以下结果输出:

Table

可以看出BalanceBF列返回值的位置NULL AccountBalances(前三列)我希望这些列具有null中表格中的适用值表我尝试这样做如下:

enter image description here

因此,下图中最后三列中的值只需要位于前面三列中,<div class="container-fluid preview-height no-padding"> <% @posts.each do |p| %> <div class="container-fluid d-block"> <div class="row disp-margin text-white preview-height bg-cover bg-img" style="background-image: url('<%= p.image.length > 0 ? p.image : default_background_url %>');"> <div class="col-lg-12 text-center vcenter"> <p class="h1"><a><%= p.title %></a></p><%# Post's title...%> <a class="bordera m-padding"><%= p.style %></a> <a class="bordera m-padding"><%= p.genre %></a> <a class="bordera m-padding"><%= p.platform %></a> <h3><%= p.likes.length %> likes</h3> <%= p.body %> </div> </div> <div class="row b-padding bg-white text-center"> <h3 class="col-lg-12 text-center">by <%= p.user.name %> </div> <div class="row no-padding bg-white h1"> <h3 class="col-lg-12 text-center"> <%= link_to "Like", post_likes_path(p), method: :post %> </h3> <h4 class="col-lg-12 text-center"> <%=link_to("Back to the top","#", class:'text-dark')%> </h4> </div> </div> <% end %> </div> 出现在下图中:

enter image description here

请让我知道什么是可能的。

1 个答案:

答案 0 :(得分:0)

通过选择两个表中的所有文本列,执行union all join,删除aggregate的重复项,然后将outer joining两个表中的数字数据列删除到工会表。