例子使用没有自增id的表,sqlserver使用row_number函数实现自增列
rataa为要计算的乘积列;ccid为row_number函数依赖的列
代码块:

WITH RecursiveCTE AS (
	select t.rowNo,t.rataa AS Product
	FROM
	    (select rataa,ccid,ROW_NUMBER() over (order by ccid) rowNo from 表名 where ccid=1003) t
	WHERE
	    t.rowNo = 1
	UNION ALL
	SELECT
	    n.rowNo,r.Product * n.rataa AS Product
	FROM
	    (select rataa,ccid,ROW_NUMBER() over (order by ccid) rowNo from 表名 where ccid=1003) n
	INNER JOIN
	    RecursiveCTE r ON n.rowNo = r.rowNo + 1
)
-- 取最后一行的累积乘积结果及对应行号
SELECT
    TOP 1 rowNo,Product
FROM
    RecursiveCTE
ORDER BY
    rowNo DESC;
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐