【发布时间】:2015-07-31 15:35:20
【问题描述】:
我有两张桌子:PermanentTable 和 TemporaryTable。
TemporaryTable中有7列:
Id, CreditInvoiceDate, CreditInvoiceNumber, CreditInvoiceAmount,
CreditDeniedDate, CreditDeniedReasonId, CreditDeniedNotes.
所有这些列也在PermanentTable 中,如果Id 与TemporaryTable 中的一个匹配,则之前已填写。
我有一个查询,它返回 TemporaryTable 中的 ID,显示“Y”的列是 PermanentTable 中匹配的 ID,如果不匹配,则显示“N”。如果匹配,CreditInvoiceDate、CreditInvoiceNumber 和 CreditInvoiceAmount 或 CreditDeniedDate、CreditDeniedReasonId 和 CreditDeniedNotes 将填充数据(但不是全部 6 个)。如果它们匹配,还将填充名为 AuthNumber 的列。我的查询返回这些。
查询
Select
t.Id, p.AuthNumber,
p.CreditInvoiceDate, p.CreditInvoiceNumber,
p.CreditInvoiceAmount, p.CreditDeniedDate,
p.CreditDeniedReasonId, p.CreditDeniedNotes,
case
when p.Id is not null
then 'Y' else 'N'
end as Matched
from
TemporaryCsvUpload t
left join
PermanentTable p on p.Id = t.Id
结果
这是我已经达到的目的,但这是我想要去的地方:
我想调整这个查询,这样我就可以去掉最后的 Matched 列,而是有 2 个 Id 列。一个包含TemporaryTable 中与PermanentTable 匹配的ID,另一个包含不匹配的ID。如果 Id 不匹配,则不会填写其他字段,因此无需检查。
如果您有任何问题,请告诉我。谢谢!
【问题讨论】:
-
我很好奇,这与您的其他question 有何不同?
-
因为我试图将 Id 列分为 Id Matched 和 Not Matched 并且只显示匹配时生成的其他列
标签: sql sql-server sql-server-2008 join