You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于NumberofApplication列数据动态生成新记录的SQL查询需求

实现需求的SQL修改方案

方法1:递归CTE生成对应记录

通过递归公共表表达式(CTE)为每条原记录生成指定数量的ApplicationID序列:

WITH AppSeq AS (
    -- 初始化:取原表数据,ApplicationID从1开始
    SELECT 
        ResponseID, Variety, Product, MixID,
        1 AS ApplicationID, NumberOfApplications
    FROM #pattmp
    WHERE ResponseID = 'mnmbaf'
    UNION ALL
    -- 递归生成后续ID,直到达到NumberOfApplications的值
    SELECT 
        ResponseID, Variety, Product, MixID,
        ApplicationID + 1, NumberOfApplications
    FROM AppSeq
    WHERE ApplicationID < NumberOfApplications
)
SELECT 
    ResponseID, Variety, Product, MixID,
    ApplicationID, NumberOfApplications
FROM AppSeq
ORDER BY Product, ApplicationID;

方法2:利用系统表生成数字序列(SQL Server适用)

如果使用SQL Server,可以借助系统表master..spt_values快速生成数字范围,避免递归:

SELECT 
    p.ResponseID, p.Variety, p.Product, p.MixID,
    v.number AS ApplicationID, p.NumberOfApplications
FROM #pattmp p
INNER JOIN master..spt_values v 
    ON v.type = 'P' 
    AND v.number BETWEEN 1 AND p.NumberOfApplications
WHERE p.ResponseID = 'mnmbaf'
ORDER BY p.Product, v.number;

关键说明

  • 两种方案都会将原表中每条记录扩展为NumberOfApplications条新记录,ApplicationID自动填充为1到对应数值(比如原表值为3时,每条原记录生成3条新记录)。
  • 递归CTE兼容性更好,适合所有支持CTE的SQL数据库;系统表方法在处理较大数值时性能更优,但仅适用于SQL Server。

内容的提问来源于stack exchange,提问作者Sriram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:13:17