Sql 将行数()与派生表一起使用
我有一个返回ID和DATEDIFF值的表: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
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) 您的第一个查询不应该在任何数据库中工作,因为表达式和分组依据
之间的不兼容问题已修复。谢谢你的关注。我已经根据你的答案编辑了这个问题以提供更多细节。