【超级干货】SQL随机增加销售数据的脚本编写(附脚本下载地址)

前言

我们在做查询报表编写进行测试的时候,需要很多的原始数据才能检测报表的准确度,如果通过软件里一步一步的操作生成原始数据会非常的耗时,所以才想写一个脚本来自动生成随机数据,方便进行测试。


准备工作

正常我们商业来说每销售一笔数据都会生成一笔流水,一般流水会有商品流水(即这笔销售里面都有什么商品),付款流水(即这笔流水里面用的哪种支付方式,如现金,银行卡,支付宝,微信等),还需要一个原始的商品资料表和一个支付方式的表,所以我们先建四个表,这里主要是为了给大家分享一下实现的方式,所以我们建的表都比较简单。

商品资料表

然后我们自己先插入一些模拟数据,插入数据这里很简单我就不再写了

支付方式

我们也插入一些支付方式的数据

商品流水表

付款流水表

这样我们的准备工作已经完成了


实现思路

我们可以自己设置一个变量定义要生成的流水笔数,然后做一个循环一笔一笔的进行生成,下面是主要介绍每笔流水生成的思路。

  1. 生成当前流水的流水号

  2. 生成当前流水的销售日期和销售时间

  3. 随机生成当前流水的商品流水数据

  4. 随机生成当前流水的付款流水数据

编写脚本

定义我们要用到的变量

初始设置一些基本的参数

开始进入循环插入,每次都要先初始化当前流水的交易总金额,防止计算出错

当每笔流水插入完后记得要把流水号加1,把要生成的流水笔数减1(防止死循环)


1.生成当前流水的流水号

流水号生成格式为当前年月日加四位的流水

select @lsh= RIGHT('000000'+convert(varchar(4),@lsno),4)

用这个来先生成4位流水,如果前面不够4位的用0补齐,然后前面再加上当前的年月日


2.生成当前流水的销售日期和销售时间

销售日期我们默认为当前日期,时间是通过随机生成的,原理是小时随机生成不大于23的两位数,分钟和秒都是随机生成不大于59的两位数,用100+生成数再截取后面2位是防止只有个位数的话还需要再前面补0的操作


3.随机生成当前流水的商品流水数据

  • select top (@nowspqty) 商品编码,商品名称,售价 from 商品信息 order by NEWID()这句后面的order by NewID()是查询后随机生成排序,通过top加我们要生成的商品个数,每次查询都会随机生成不同的商品信息

  • 通过游标后进行数据的遍历,每一条数据遍历时随机生成销售的数量,并计算当前商品的销售额及总流水的销售额

  • 将当前的商品写入商品的流水表里


4.随机生成当前流水的付款流水数据

  • 首先随机获取本次流水的支付方式个数

  • 随机抽取出本次流水的支付方式

  • 计算当前支付流水的支付金额,原理:当只剩一笔支付情况下,我们就把剩余的总销售金额全部算到当前支付流水里,如果大于一笔的支付情况下,我们随机计算当前的支付金额(支付金额不大于剩余销售金额)


查询生成的结果数据

商品流水表数据

付款流水表数据

附脚本下载地址:

链接:https://pan.baidu.com/s/1Kt80cpwH8YAX7lu0GrRJHQ 密码:ti6e


-END-

长按下方二维码关注

  • 1
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值