【发布时间】:2018-06-18 14:17:26
【问题描述】:
下面的任何帮助都会很棒,我已经尝试了好几天才能做到这一点。
根据下面的屏幕截图,我有两个表:
我需要的是一个新表,其中包含单个 Period、PropertyID 和 TransactionCodeID 列。
这些必须使用两个表中的值列BalanceBF、BudgetAmount、ActualAmount 和RevisedBudget 填充,其中任何一个列在上述任一表中的一行中。
因此,两个表中的所有值都必须出现,并且可以在适用的情况下合并为一行。
我尝试过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))`
我得到以下结果输出:
可以看出BalanceBF 列返回值的位置,其他列是NULL(在前三列中)我希望这些具有AccountBalances 表中表中的适用值我尝试这样做下面:
所以下图中最后三列的值只需要在下图中出现null的前三列中即可:
请告诉我什么是可能的。
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
@GordonLinoff 请参阅编辑,希望它能澄清事情。