Sql 仅提取最新状态行
在我的表格中,我有三种输入的订单状态:Aw Appr和Completed。在AW Appr每周重复一次直到订单完成时,输入和完成的每一行。现在这三种状态都有了,但只有一次。AW Appr应为最新版本。我正在使用此查询,但它只提供最长月份和最长周数据。最新输入的完整数据的最大可用周数。请帮助增强查询以获取所有三个状态,并仅获取最新的AW Appr 源表 结果应为- 使用Sql 仅提取最新状态行,sql,sql-server,Sql,Sql Server,在我的表格中,我有三种输入的订单状态:Aw Appr和Completed。在AW Appr每周重复一次直到订单完成时,输入和完成的每一行。现在这三种状态都有了,但只有一次。AW Appr应为最新版本。我正在使用此查询,但它只提供最长月份和最长周数据。最新输入的完整数据的最大可用周数。请帮助增强查询以获取所有三个状态,并仅获取最新的AW Appr 源表 结果应为- 使用行号() 使用行号() 我们可以在这里尝试使用行编号来获得一个简单的解决方案: SELECT Contract_Number,
行号()
使用行号()
我们可以在这里尝试使用行编号
来获得一个简单的解决方案:
SELECT Contract_Number, D_Monthx, D_Reporting_Week, D_Status
FROM
(
SELECT D_Monthx, D_Reporting_Week, D_Status, Contract_Number,
ROW_NUMBER() OVER (PARTITION BY Contract_Number, D_Status
ORDER BY D_Reporting_Week DESC) rn
FROM yourTable
) t
WHERE rn = 1;
行号在这里工作得很好,因为对于输入的
和完成的
状态只会出现一次,这意味着它们的行号总是一个。类似地,我们要选择的最新AW Appr
的行号也将是一个。我们可以尝试在此处使用行号来获得简单的解决方案:
SELECT Contract_Number, D_Monthx, D_Reporting_Week, D_Status
FROM
(
SELECT D_Monthx, D_Reporting_Week, D_Status, Contract_Number,
ROW_NUMBER() OVER (PARTITION BY Contract_Number, D_Status
ORDER BY D_Reporting_Week DESC) rn
FROM yourTable
) t
WHERE rn = 1;
行号在这里工作得很好,因为对于输入的
和完成的
状态只会出现一次,这意味着它们的行号总是一个。类似地,我们要选择的最新AW Appr
的行号也将是一
SELECT Contract_Number, D_Monthx, D_Reporting_Week, D_Status
FROM
(
SELECT D_Monthx, D_Reporting_Week, D_Status, Contract_Number,
ROW_NUMBER() OVER (PARTITION BY Contract_Number, D_Status
ORDER BY D_Reporting_Week DESC) rn
FROM yourTable
) t
WHERE rn = 1;