首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在t中使用前面的所有行创建递归。

问如何在t中使用前面的所有行创建递归。
EN

Stack Overflow用户
提问于 2022-06-06 07:04:49
回答 1查看 85关注 0票数 0

初步数据:有条件的100人吃坚果,糖果,苹果.总共,苹果,糖果,坚果的最大数量,1000件为所有人。这些人每天吃两顿饭,每人吃不同数量的糖果、苹果和坚果。他们第一次吃了多少坚果、糖果、苹果都是众所周知的。我们需要计算他们在第二餐中可以吃多少,如果每个人每天最多可以吃10个糖果、苹果和坚果。他们轮流吃,我需要计算他们每个人今天还能吃多少糖果、苹果和坚果。因此,我需要计算出,从原来的1000块坚果,糖果,苹果之后,每个人剩下了多少东西。每个人能多吃多少坚果,糖果,苹果,考虑到最后一餐,并考虑到他们每天最多可以吃10块坚果,糖果,苹果,我认为这应该通过递归来解决,在每次迭代中使用以前的记录和当前的记录。或者你能给我其他解决办法吗?我弄错了一张桌子:

代码语言:javascript
复制
select 1 num, 1 s,  50 ss, 11 b, 20 bs
    union
    select 2 num, 1 s, 101 ss, 11 b, 50 bs
    union
    select 3 num, 2 s, 103 ss, 12 b, 50 bs

我需要通过num在每次迭代中递归地将其中的每条线与我自己以及前面的行连接起来。

代码语言:javascript
复制
1 iteration:
[n  num s   ss  b   bs  num_    s_  ss_ b_  bs_
1   1   1   50  11  20  1   1   50  11  20][1]
2 iteration:
[n  num s   ss  b   bs  num_    s_  ss_ b_  bs_
2   2   1   101 11  50  2   1   50  11  20
2   2   1   101 11  50  2   1   101 11  50][2]
3 iteration:
[n  num s   ss  b   bs  num_    s_  ss_ b_  bs_
3   3   2   103 12  50  3   1   50  11  20
3   3   2   103 12  50  3   1   101 11  50
3   3   2   103 12  50  3   2   103 12  50][3]
Total:

在这里输入图像描述

在每一次迭代中,我将做更多的计算,所以我正在寻找一种方法来输出这样的一个递归,只有一个计算部分。下面是我的尝试,但它未能将当前锚部分添加到迭代中:

代码语言:javascript
复制
    with a as  
(
    select 1 num, 1 s,  50 ss, 11 b, 20 bs
    union
    select 2 num, 1 s, 101 ss, 11 b, 50 bs
    union
    select 3 num, 2 s, 103 ss, 12 b, 50 bs

)
--select * from res

,
rec as (
select 1 n, a.num, a.s, a.ss, a.b, a.bs, a.num num_, a.s s_, a.ss ss_, a.b b_, a.bs bs_  from a where num =1
union all
 
select n+1, a.num, a.s, a.ss, a.b, a.bs, rec.num num_ , rec.s s_, rec.ss ss_, rec.b b_, rec.bs bs_ from rec,a 
where a.num=rec.num+1-- and a.num<>rec.num_



)
select  top 20 * from rec order by n,num, num_
EN

回答 1

Stack Overflow用户

发布于 2022-06-08 07:51:07

我很难理解你的需要。您提到了递归、迭代和计算,但是我没有看到这样的事情。您指示的结果集可以使用这个简单的自连接:

代码语言:javascript
复制
with a as  
(
    select 1 num, 1 s,  50 ss, 11 b, 20 bs
    union
    select 2 num, 1 s, 101 ss, 11 b, 50 bs
    union
    select 3 num, 2 s, 103 ss, 12 b, 50 bs

)
select * 
from 
    a
    inner join a a_prev on a_prev.num<=a.num
order by a.num,a_prev.num
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72514136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档