一对多表连接到汇总表

时间:2016-06-03 15:57:41

标签: sql-server jointable

我需要加入以下两个表:

Transactions (multiple rows per person)
LedgerSummary (Summary table) - one row per person

如何加入这两个表,但不能将LedgerSummary数据附加到每一行交易?我只想将LedgerSummary数据附加到每人的第一行交易(ID)。

这两个表都有可以加入的PersonID列。但是,LedgerSummary有一个Amount字段。如果我进行常规的左或右连接,则SUM(金额)将是错误的,因为这两个表是如何相关的。这就是我希望Amount只为每个人而不是每一行出现一次的原因。

1 个答案:

答案 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 - 优先级列,通常是降序为最近的日期。