Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在Where子句中排名_Sql Server_Tsql - Fatal编程技术网

Sql server 在Where子句中排名

Sql server 在Where子句中排名,sql-server,tsql,Sql Server,Tsql,可以在Where子句中使用Rank吗。下面是我打算使用的代码 Select DebtorID ,Rank () over (partition by DebtorID order by BalanceDate) as RankBalanceDate ,BalanceDate ,Balance ,UnallocatedBalance ,Overdue From Debtorbalances Where Rank () Over (Partition by Debto

可以在Where子句中使用Rank吗。下面是我打算使用的代码

  Select 
   DebtorID
  ,Rank () over (partition by DebtorID order by BalanceDate) as RankBalanceDate
  ,BalanceDate
  ,Balance
  ,UnallocatedBalance
  ,Overdue
From Debtorbalances
Where Rank () Over (Partition by DebtorID order by BalanceDate) = 1

不,不可能

窗口函数只能出现在SELECT或ORDER BY子句中

您可以使用
CTE
或子查询来执行此操作:

使用
CTE

with Cte AS(
    Select 
        DebtorID
        ,rank() over (partition by DebtorID order by BalanceDate) as RankBalanceDate
        ,BalanceDate
        ,Balance
        ,UnallocatedBalance
        ,Overdue
    From Debtorbalances
)
select * 
from Cte
where 
    RankBalanceDate = 1
使用子查询:

select *
from (
    select 
        DebtorID
        ,rank() over (partition by DebtorID order by BalanceDate) as RankBalanceDate
        ,BalanceDate
        ,Balance
        ,UnallocatedBalance
        ,Overdue
    From Debtorbalances
)t
where 
    RankBalanceDate = 1