SQL里如何做循环

flyfly2008 2015-03-17 03:05:30
如有一个表有两列,

bh num
A 2
B 3
C 4


要得到如下结果

bh bhex
A A.1
A A.2
B B.1
B B.2
B B.3
C C.1
C C.2
C C.3
C C.4


就是列bh 列根据列num 的值,进行扩展。本身+点+次数
如A的num 为2
那么就要变成两行,A A.1
A A.2
依此类推


...全文
170 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamesrggg 2015-03-17
  • 打赏
  • 举报
回复
--定义来源表 Declare @TmpA Table( BH NVarchar(2), Num Int) --写入测试数据 Insert Into @TmpA Select N'A',2 Union Select N'B',3 Union Select N'C',4 --定义新产生数据表 Declare @TmpB Table( BH NVarchar(2), BHex NVarchar(5)) --定义循环变量 Declare @BH NVarchar(2),@Num Int,@Step Int --开始循环 While (Select COUNT(1) From @TmpA) > 0 Begin Set @BH = (Select Top 1 BH From @TmpA) Set @Num = (Select Num From @TmpA Where BH = @BH) Set @Step = 1 --嵌套循环产生数据 While @Step <= @Num Begin Insert Into @TmpB Select @BH,@BH + N'.' + Convert(NVarchar,@Step) Set @Step = @Step + 1 End --删除完成循环的记录 Delete From @TmpA Where BH = @BH End Select * From @TmpB
發糞塗牆 2015-03-17
  • 打赏
  • 举报
回复
你这种切记不要用循环,实际上就是字符拼接。
还在加载中灬 2015-03-17
  • 打赏
  • 举报
回复
SELECT T1.bh,T1.bh+'.'+CAST(T2.number AS VARCHAR(10)) AS num
FROM TB T1 JOIN master..spt_values T2 ON T2.type='P'
WHERE T2.number>0 AND T2.number<=T1.num

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧