我需要加入以下两个表:
Transactions (multiple rows per person)
LedgerSummary (Summary table) - one row per person
如何加入这两个表,但不能将LedgerSummary数据附加到每一行交易?我只想将LedgerSummary数据附加到每人的第一行交易(ID)。
这两个表都有可以加入的PersonID列。但是,LedgerSummary有一个Amount字段。如果我进行常规的左或右连接,则SUM(金额)将是错误的,因为这两个表是如何相关的。这就是我希望Amount只为每个人而不是每一行出现一次的原因。
答案 0 :(得分:1)
;With cteTransactions As
(
Select *, Row_Number() Over (Partition By IdThatLinksToTransAndLedger, Order By
ColumnToGivePriorityOnSelectingOneTransaction) SortOrder
From Transactions
)
Select *
From LedgerSummary L
Join (Select * From cteTransactions Where SortOrder = 1) T
On L.IdThatLinksToTransAndLedger = T.IdThatLinksToTransAndLedger
IdThatLinksToTransAndLedger - 你需要一个人的钥匙 ColumnToGivePriorityOnSelectingOneTransaction - 优先级列,通常是降序为最近的日期。