Sql 有人能解释一下吗
我借用了一个查询,并根据自己的目的对其进行了修改,但当我不完全确定它在做什么时,我不喜欢这样做。SQL文档在此子句中的描述不足。这是我借用和修改的,你能告诉我它基本上在做什么吗Sql 有人能解释一下吗,sql,sql-server,database,sql-server-2005,tsql,Sql,Sql Server,Database,Sql Server 2005,Tsql,我借用了一个查询,并根据自己的目的对其进行了修改,但当我不完全确定它在做什么时,我不喜欢这样做。SQL文档在此子句中的描述不足。这是我借用和修改的,你能告诉我它基本上在做什么吗 (SELECT Id FROM ( SELECT Id ,RANK() OVER ( PARTITION BY DropStatusId ORDER BY StatusDate DESC) [Rank] FROM
(SELECT Id FROM
(
SELECT
Id
,RANK() OVER ( PARTITION BY DropStatusId ORDER BY StatusDate DESC) [Rank]
FROM
[dbo].[tblLHTrackingHistory] [TempHistory]
WHERE
[TempHistory].[DropStatusId] = [DropStatus].[Id]
) [TT1] WHERE [Rank] = 1
)
阅读,这是非常直截了当的。
“归功于Jeff Smith”子句中的
OVER
表示您正在使用分析(而不是聚合)。根据:
在应用关联的窗口函数之前,确定行集的分区和顺序
与聚合不同,分析不需要定义分组依据。到目前为止答案都很好。
有时,一个直观的例子有助于:
DropStatusId StatusDate Rank
1 2010-02-19 1 <
1 2010-02-18 2
1 2010-02-17 3
2 2010-02-18 1 <
2 2010-02-15 2
2 2010-02-13 3
2 2010-02-12 4
DropStatusId StatusDate排名
1 2010-02-19 1 <
1 2010-02-18 2
1 2010-02-17 3
2 2010-02-18 1 <
2 2010-02-15 2
2 2010-02-13 3
2 2010-02-12 4
“分区”是给定DropStatusId的记录。+1表示“当我不完全确定它在做什么时,不喜欢这样做”