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

2019-07-25 11:14:27 浏览数 (1)

前言

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


准备工作

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

商品资料表

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

支付方式

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

商品流水表

付款流水表

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


实现思路

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

  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-

0 人点赞