【发布时间】:2018-12-21 18:42:36
【问题描述】:
我有一个表,我在其中返回一个 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_item_id 的许多date_diff 值。
据此,我希望创建一个表,其中为每个ctd_item_id 保留最大的date_diff。因此,我应该使用 ROW_NUMBER() - 但我不确定如何将上述值的创建 (date_diff) 与 ROW_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
返回一个像这样的表:
但我只想要以黄色突出显示的行,这就是为什么我觉得在这个表上我需要执行ROW_NUMBER()。
【问题讨论】:
-
(1) 用您正在使用的数据库标记您的问题。 (2) 你的第一个查询不应该在任何数据库中工作,因为表达式和
group by不兼容。 -
已修复。感谢您的关注。
标签: sql sql-server reporting-services