假设有table a: age ,A01,A2,A3,A4,A5,A6,...
如果AGE=6 那么就把A1+A2+A3+A4+A5+A6查询输出
就类似于F(X)=F(X)+F(X-1)的实现...
求解答
现在不是讨论设计表的问题。。是现在表结构已经是这样的.而且如果AGE为2 那么 A3可能还有数据没有清空..不能单纯的SUM组合..
sql 迭代查询的问题 求高人
答案:3 悬赏:80
解决时间 2021-02-20 19:45
- 提问者网友:空白
- 2021-02-20 00:37
最佳答案
- 二级知识专家网友:苦柚恕我颓废
- 2021-02-20 01:18
先将表格旋转一下,然后聚合:
select age,sum(A) as A
from
(select age, A1 as A, 1 as F
union all
select age, A2, 2 as F
union all
select age, A3, 3as F
union all
select age, A4, 4 as F
union all
select age, A5, 5 as F
union all
select age, A6, 6 as F
...
) AS a
where F <= age
group by age
select age,sum(A) as A
from
(select age, A1 as A, 1 as F
union all
select age, A2, 2 as F
union all
select age, A3, 3as F
union all
select age, A4, 4 as F
union all
select age, A5, 5 as F
union all
select age, A6, 6 as F
...
) AS a
where F <= age
group by age
全部回答
- 1楼网友:不服输的倔强
- 2021-02-20 02:33
设计出这种表的人应该好好学习一下数据库理论
- 2楼网友:一个很哇塞的汉子
- 2021-02-20 01:50
你的意思是否当age=A6就输出A1+A2+A3+A4+A5+A6啊为什么排除A01你没给出,所以我也只能大概写了
用case和截取字符串的办法吧例如:select case when age=6 then (select replace(substring(age,5,patindex('%A6%',age)+1),',','+'))
end
from a
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯