Sql 将行数()与派生表一起使用

Sql 将行数()与派生表一起使用,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,我有一个返回ID和DATEDIFF值的表: SELECT CTD_ITEM_ID, CTD_ASSIGNED_TO, DATEDIFF(d, CTD_ASSIGNED_DATE, CTD_REVIEW_COMPLETED_DATE) AS DATE_DIFF FROM IRT_ITEM_TRACKING_DETAIL_TBL ORDER BY CTD_ITEM_ID, DATE_DIFF DESC 这会导致相同的ctd

我有一个返回ID和DATEDIFF值的表:

SELECT        
    CTD_ITEM_ID, CTD_ASSIGNED_TO, 
    DATEDIFF(d, CTD_ASSIGNED_DATE, CTD_REVIEW_COMPLETED_DATE) AS DATE_DIFF
FROM            
    IRT_ITEM_TRACKING_DETAIL_TBL
ORDER BY 
    CTD_ITEM_ID, DATE_DIFF DESC
这会导致相同的
ctd\u项目id
的许多值为
date\u diff

我希望以此为基础创建一个表,其中每个
ctd\u项目的id
都保留了最大的
日期差异。因此,我应该使用
ROW\u NUMBER()
——但我不确定如何将上述值(
date\u diff
)的创建与
ROW\u NUMBER()功能结合起来

我已经尝试过多次类似的迭代:

WITH max_date_diffs AS 
( 
    SELECT 
        date_diffs.ctd_item_id, 
        date_diffs.date_diff 
    FROM   
        (SELECT 
             ctd_item_id, 
             DATEDIFF(d, ctd_assigned_date, ctd_review_complete_date) AS datediff 
         FROM   
             irt_item_tracking_detail_tbl) AS date_diffs
) 
SELECT   
    ROW_NUMBER() OVER ctd_item_id (ORDER BY date_diff DESC) AS rownumber, 
    * 
FROM
    max_date_diffs
但我一直没能让它发挥作用

编辑:

本声明:

SELECT        
    CTD_ITEM_ID, CTD_ASSIGNED_TO, 
    MAX(DATEDIFF(DAY, CTD_ASSIGNED_DATE, CTD_REVIEW_COMPLETED_DATE)) AS MAX_DATE_DIFF
FROM
    IRT_ITEM_TRACKING_DETAIL_TBL
GROUP BY 
    CTD_ITEM_ID, CTD_ASSIGNED_TO
ORDER BY 
    CTD_ITEM_ID, max_date_diff DESC
返回如下所示的表:

WITH max_date_diffs AS 
( 
    SELECT 
        date_diffs.ctd_item_id, 
        date_diffs.date_diff 
    FROM   
        (SELECT 
             ctd_item_id, 
             DATEDIFF(d, ctd_assigned_date, ctd_review_complete_date) AS datediff 
         FROM   
             irt_item_tracking_detail_tbl) AS date_diffs
) 
SELECT   
    ROW_NUMBER() OVER ctd_item_id (ORDER BY date_diff DESC) AS rownumber, 
    * 
FROM
    max_date_diffs


但是我只想要以黄色突出显示的行,这就是为什么我觉得在这个表上我需要执行
行编号()

SELECT ctd_item_id, 
       MAX(DATEDIFF(DAY, ctd_assigned_date, ctd_review_completed_date)) AS MAX_DATE_DIFF
FROM irt_item_tracking_detail_tbl 
GROUP BY ctd_item_id 
ORDER BY max_date_diff ;

似乎您缺少按ctd\u item\u id划分的
分区

尝试:


(1) 用您正在使用的数据库标记您的问题。(2) 您的第一个查询不应该在任何数据库中工作,因为表达式和
分组依据
之间的不兼容问题已修复。谢谢你的关注。我已经根据你的答案编辑了这个问题以提供更多细节。