使用多个表对结果进行分组/限制

时间:2016-01-28 23:04:16

标签: sql sql-server tsql

我需要显示三个表中的数据,只显示有限的链接数据。

表格示例 -
客户:客户名称,客户ID 帐户:AccountName,AccountID,CustomerID
交易:TransactionAmount,TransactionDate,TransactionID,AccountID,CustomerID

客户可能没有任何关联的帐户,但可能有多个。 帐户可能没有任何链接的交易,但可能有多个。

显示数据有两种必要的方法:

  1. TransactionDate排名前200位交易,每个帐户只有一个(最近的TransactionDate)。显示CustomerName,AccountName,TransactionAmount。

  2. 搜索结果Customername,AccountName或TransactionID 一个。如果按CustomerName搜索,则仅显示具有最高AccountID的CustomerName,AccountName,以及仅使用最新TransactionDate的相关TransactionAmount。客户可能没有任何账户或交易 湾如果通过AccountName搜索,则仅使用最新的TransactionDate显示CustomerName,AccountName和相关的TransactionAmount。客户可能没有任何交易 C。如果通过TransactionID搜索,则显示CustomerName,AccountName和TransactionAmount。 (这个很简单)

  3. 我无法确定如何根据需要执行限制数据所需的分组和其他聚合函数。 任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

1)将交易限制为最新的交易,您可以执行类似

的操作
with LatestTransactionByAccount as (
  select * from Transactions t
  where not exists (
    select 1 from Transactions t2 where t2.AccountID = t.AccountID
    and t2.TransactionDate < t.TransactionDate)
)
select ...
from LatestTransactionByAccount
join ...

2)类似地工作