【发布时间】:2021-06-28 17:48:40
【问题描述】:
我正在尝试在 SQL 中创建行号,但不想使用某些数字。
示例说明:
Bob, 100
Matt, 120
Dan, 150
Bill, 156
Tim, 175
通常在 SQL 中......如果我要使用 Row_Number() 函数......它会计数 - 1、2、3、4、5。
我想跳过某些数字,以便计数 - 1、2、5、6、7
下面是我的代码
SELECT
CASE
WHEN clean_client_nm = 'Total Opportunities'
THEN 0
ELSE ROW_NUMBER() OVER (ORDER BY clean_ft_ee DESC)
END AS row_id,
prod,
client_nm,
clean_ft_ee,
ISNULL(Med, ''),
ISNULL(Stop, ''),
ISNULL(Den, ''),
ISNULL(VIS, ''),
ISNULL(Life, ''),
ISNULL(STD, ''),
ISNULL(LTD, ''),
ISNULL(Worksite, ''),
client_sic
FROM
(SELECT * FROM TOTAL
UNION ALL
SELECT * FROM BASE) AS X
ORDER BY
CASE
WHEN clean_client_nm = 'Total Opportunities'
THEN 0
ELSE 1
END,
clean_ft_ee DESC, client_nm
【问题讨论】:
-
请解释跳过的逻辑。
-
@GordonLinoff 只是试图优化代码,以便在将其粘贴到 Excel 电子表格中时,我可以简单地打印表格并正确格式化。换言之,无需操作繁重的公式或 vba 代码。
-
带有 FOR 循环的动态 SQL。当您找到要跳过的值时,只需增加您的迭代器即可。
标签: sql row-number