SQL 按表中的一个int值拆分成对应的个数的记录条数

IF OBJECT_ID(N'tempdb..#tmp') IS NOT NULL

    DROP TABLE #tmp

   

CREATE TABLE #tmp ( aaa VARCHAR(10), bbb INT )

 

INSERT  INTO #tmp

        ( aaa, bbb )

VALUES  ( '11111', 5 )

INSERT  INTO #tmp

        ( aaa, bbb )

VALUES  ( '22222', 3 )

INSERT  INTO #tmp

        ( aaa, bbb )

VALUES  ( '33333', 2 )

INSERT  INTO #tmp

        ( aaa, bbb )

VALUES  ( '44444', 1 )

INSERT  INTO #tmp

        ( aaa, bbb )

VALUES  ( '55555', 3 )

 

--SELECT * FROM #tmp

 

;WITH    Digits

          AS ( SELECT   0 AS Number

UNION SELECT 1

UNION SELECT 2

UNION SELECT 3

UNION SELECT 4

UNION SELECT 5

UNION SELECT 6

UNION SELECT 7

UNION SELECT 8

UNION SELECT 9

             )

    SELECT  b.aaa ,

            b.bbb ,

            T.number

    FROM    #tmp b

            JOIN ( SELECT   ( d5.Number * 100000 ) + ( d4.Number * 10000 )

                            + ( d3.Number * 1000 ) + ( d2.Number * 100 )

                            + ( d1.Number * 10 ) + d0.Number AS Number

                   FROM     Digits AS d0 ,

                            Digits AS d1 ,

                            Digits AS d2 ,

                            Digits AS d3 ,

                            Digits AS d4 ,

                            Digits AS d5

                 ) t ON 1 = 1

    WHERE  t.number <= b.bbb

    ORDER BY b.aaa ,

            b.bbb ,

            t.Number

转载于:https://www.cnblogs.com/anranstl/p/5241275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值