关于数组循环遍历..

数据如下

name   age    

张三      19

李四       10

结果如下

name  age

张三     10

张三       9

李四        10

李四         0

通过数组循环遍历sqlserver有什么思路嘛

SQL 3333xzx 发布于 2022-12-2 09:23
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
3333xzxLv4初级互助
发布于2023-9-14 17:20

-- 创建临时表并插入数据

CREATE TABLE #temp (

    name VARCHAR(100),

    age INT

);

INSERT INTO #temp (name, age)

VALUES

    ('张三', 19),

    ('李四', 10);

-- 查询结果

SELECT

    t.name,

    (t.age - ROW_NUMBER() OVER (PARTITION BY t.name ORDER BY t.name, t.age) + 1) AS age

FROM

    #temp t

ORDER BY

    t.name, t.age;

-- 删除临时表

DROP TABLE #temp;

首先创建了一个名为 #temp 的临时表,并插入了原始数据。然后使用 SELECT 查询语句,通过计算 ROW_NUMBER 和使用与子查询获取所需结果,并按 name 和 age 排序。

最佳回答
0
lxy2Lv6中级互助
发布于2022-12-2 09:37(编辑于 2022-12-2 09:38)

with a as(

select 'A' AS A,19 AS B,10 min_qty

UNION ALL

select 'B' AS A,10 AS B,10

)

select a.a,MIN_QTY,SEQ,a.b

,case when MIN_QTY * rnk < b THEN MIN_QTY ELSE b-MIN_QTY*(rnk-1) END AS NEW_QTY

from (

select a.a,a.b,MIN_QTY,count(MIN_QTY) over ( partition by a ) as SEQ,b.number + 1 as rnk

from  a

CROSS join master..spt_values b

where b.number * a.MIN_QTY <= a.B and b.Type = 'P'

) a

  • 1关注人数
  • 557浏览人数
  • 最后回答于:2023-9-14 17:20
    请选择关闭问题的原因
    确定 取消
    返回顶部