一对多 table 加入摘要 table
One to many table joined to summary table
我需要加入以下两个表:
Transactions (multiple rows per person)
LedgerSummary (Summary table) - one row per person
如何连接这两个表,但不获取每行交易的 LedgerSummary 数据?我只希望 LedgerSummary 数据附加到每人交易的第一行 (ID)。
这两个表都有我可以加入的 PersonID 列。但是,LedgerSummary 有一个 Amount 字段。如果我进行常规的左连接或右连接,SUM(Amount) 将是错误的,因为这两个表是如何相关的。这就是我希望 Amount 每个人而不是每一行只出现一次的原因。
;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 - 您需要 Person 的密钥
ColumnToGivePriorityOnSelectingOneTransaction - 优先级列,通常是降序给出最近的日期。
我需要加入以下两个表:
Transactions (multiple rows per person)
LedgerSummary (Summary table) - one row per person
如何连接这两个表,但不获取每行交易的 LedgerSummary 数据?我只希望 LedgerSummary 数据附加到每人交易的第一行 (ID)。
这两个表都有我可以加入的 PersonID 列。但是,LedgerSummary 有一个 Amount 字段。如果我进行常规的左连接或右连接,SUM(Amount) 将是错误的,因为这两个表是如何相关的。这就是我希望 Amount 每个人而不是每一行只出现一次的原因。
;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 - 您需要 Person 的密钥 ColumnToGivePriorityOnSelectingOneTransaction - 优先级列,通常是降序给出最近的日期。