sqlserver计算某一列的乘积(递归 CTE)
·
例子使用没有自增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;
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)