Sql server 根据SQL Server中的不同类型选择上一行

Sql server 根据SQL Server中的不同类型选择上一行,sql-server,Sql Server,假设我有下表: 我希望实现以下目标: 我使用Microsoft SQL Server查找所有提款的存款,然后查找提款前的第一笔存款 我已经尝试使用带有分区的行号,但是我没有管理,因为我从表中获得了第一笔存款,而不是在特定取款之前的第一笔存款。有人有建议吗?一种简单的方法是使用外部应用: 一种简单的方法是使用外部应用: 我已经尝试过使用带有分区的行数,然后向我们展示了这种尝试。你的问题,包括它。我已经尝试过使用带有分区的行数,然后告诉我们那个尝试。你的问题,包括它。 SELECT t1.Custo

假设我有下表:

我希望实现以下目标:

我使用Microsoft SQL Server查找所有提款的存款,然后查找提款前的第一笔存款


我已经尝试使用带有分区的行号,但是我没有管理,因为我从表中获得了第一笔存款,而不是在特定取款之前的第一笔存款。有人有建议吗?

一种简单的方法是使用外部应用:


一种简单的方法是使用外部应用:

我已经尝试过使用带有分区的行数,然后向我们展示了这种尝试。你的问题,包括它。我已经尝试过使用带有分区的行数,然后告诉我们那个尝试。你的问题,包括它。
SELECT t1.CustomerID
   , t1.TransType
   , t2.[DateTime] AS DepositDate
   , t1.[DateTime] AS WithdrawalDate
FROM t t1
OUTER APPLY 
(
   SELECT TOP 1 [DateTime]
   FROM t t2
   WHERE 
       t1.CustomerID = t2.CustomerID 
       AND 
       t2.[DateTime] < t1.[DateTime] 
       AND 
       TransType = 'Deposit'
   ORDER BY [DateTime] DESC
)
WHERE t1.TransType = 'Withdrawal'