第一次的任务---利用游标执行SQL整合数据库
今天天气不错,和娟儿分手了,第一次感觉舒服点,真的。
很长时间我都调节不过来。
经理昨天和我们说了这个项目,我本来想做一个工具的,貌似没有做成功,现在工具还是半吊子。上午经理要求早点做好,我就做被,有什么好说的呢 。。
给了我一个超市的需求,上面写的和真的似的。貌似肯定是真的。张明说800大洋呢。呵呵
需求:
1、要求每个门店现有的分类完全一样,类别名称也一样。
2、9个库并未一个库,以商品条码未准,条码相同的,则保留进价最低的商品信息
3、商品档案的主供应商信息不变活着为空,待以后调整。
4、自编码重新生成。
5、并库后的商品售价统一未一个,每个门店的价格签需全部更换。
6、要连锁统一管理管理,无条码商品也不许由总部统一编号,制定唯一的自编码,没有其他途径。
经理首先把9个库给了我,是excel的。
我想了半天感觉做工具的话可能有点慢,等把工具做好公司早就要交差了。就两天时间啊。算了,自己整理吧。
首先我将9个excel的表全部导入到sql数据库里面去。
那么就有9个表,。
然后重新建立一个完全相同的表结构,的表作为她以后的存放之地。
既然知道了那就好了,我将所有的表中的是13位的条形码全部弄出来
然后就出现了9个全是13位条形码的表
下面我们就要自己去吧这个游标里面的内容全部给读取出来了,怎么读呢,然后放到其他表里面
呵呵。貌似当时是这么干的,通过更改表名,我就实现了数据的转移,但是似乎就是字段之类的有点问题,这么多字段,其实一个都不是我写的,是我用代码自动生成的,感觉自己手工写的话肯定有不少错误,但是最后还是有错误,就是不怎么行啊 ,在导入第三个库的时候,出现了问题,那么我就想其他的办法了。
似乎刚才经理交给我了一点东西,有什么用呢。我这么想着,肯定可以将数据全部导出到令以个表的,
它上门的where语句是1=0那么那条命令还是会全部的扫描整个表的,那好就这么写了于是就出现了相对上门更加超级简单的SQL语句,我的心啊 是贼啦的舒服。
好了 9个表出来了,全是13位的,然后就是吧那9个表合起来,好了数据库直接导入吧,在学校学的简单的操作又操作了一遍
9个变成一个了 下面我就要执行第二个阶段了,就是将这个表里面的相同编码的数据去价格最低的。好该怎么写还得怎么写憋屈了半天写了个贼啦长的SQL语句
先是一个游标:查找出什么自己应该可以看懂的饿
DECLARE youbiao_qudanjia CURSOR FOR
SELECT item_no,min(price) FROM dbo.t_bd_item_info_13_zongbiao
GROUP BY item_no order by item_no
好下面我们好好利用这个游标,怎么做呢 。。嘿嘿先把SQL语句给标上,让大家看看,能不能很简单的理解我写的SQL语句呢。我的思想其实很简单,就是照它要求的逻辑走。
数据库跑了接近一个小时,靠在旁边抽烟。结束后基本上的主要内容算完成了,还有就是编码了。根据什么编码我还要照人商量夏,明天或许今天晚上可以将它搞定 的饿。。。嘿嘿 看了下数据库真TMD帅哈哈。
很长时间我都调节不过来。
经理昨天和我们说了这个项目,我本来想做一个工具的,貌似没有做成功,现在工具还是半吊子。上午经理要求早点做好,我就做被,有什么好说的呢 。。
给了我一个超市的需求,上面写的和真的似的。貌似肯定是真的。张明说800大洋呢。呵呵
需求:
1、要求每个门店现有的分类完全一样,类别名称也一样。
2、9个库并未一个库,以商品条码未准,条码相同的,则保留进价最低的商品信息
3、商品档案的主供应商信息不变活着为空,待以后调整。
4、自编码重新生成。
5、并库后的商品售价统一未一个,每个门店的价格签需全部更换。
6、要连锁统一管理管理,无条码商品也不许由总部统一编号,制定唯一的自编码,没有其他途径。
经理首先把9个库给了我,是excel的。
我想了半天感觉做工具的话可能有点慢,等把工具做好公司早就要交差了。就两天时间啊。算了,自己整理吧。
首先我将9个excel的表全部导入到sql数据库里面去。
那么就有9个表,。
然后重新建立一个完全相同的表结构,的表作为她以后的存放之地。
select * into t_bd_item_info_13
from dbo.t_bd_item_info1 where 1=0
第一次这么写,还是部门经理告诉我的呢 。我还真不知道。from dbo.t_bd_item_info1 where 1=0
既然知道了那就好了,我将所有的表中的是13位的条形码全部弄出来
然后就出现了9个全是13位条形码的表
select * from dbo.t_bd_item_info1
where item_no like'_____________'
---上面的'____'是下划线
我用这个语句只是想尝试的看下里面的内容是否可以读出来,然后我就将这个变成以个游标:where item_no like'_____________'
---上面的'____'是下划线
declare youbiao_qu13 cursor for
select * from dbo.t_bd_item_info9
where item_no like'_____________'
好了我相信很多人都知道怎么去用这个游标,他就相当于一个数据表一样,但是里面有个fetch的方法,(不知道叫不叫方法吧,程序写多了,姑且这么叫吧)select * from dbo.t_bd_item_info9
where item_no like'_____________'
下面我们就要自己去吧这个游标里面的内容全部给读取出来了,怎么读呢,然后放到其他表里面
open youbiao_qu13
declare
@item_no nvarchar(510),
@item_subno nvarchar(510),
@item_name nvarchar(510),
@item_subname nvarchar(510),
@item_clsno nvarchar(510),
@item_brand nvarchar(510),
@item_brandname nvarchar(510),
@unit_no nvarchar(510),
@item_size nvarchar(510),
@product_area nvarchar(510),
@price float,
@base_price float,
@sale_price float,
@combine_sta nvarchar(510),
@status nvarchar(510),
@display_flag nvarchar(510),
@other1 nvarchar(510),
@other2 nvarchar(510),
@other3 nvarchar(510),
@num1 float,
@num2 float,
@num3 float,
@po_cycle float,
@so_cycle float,
@automin_flag nvarchar(510),
@en_dis nvarchar(510),
@direct nvarchar(510),
@change_price nvarchar(510),
@purchase_tax float,
@sale_tax float,
@purchase_spec float,
@shipment_spec float,
@item_supcust nvarchar(510),
@main_supcust nvarchar(510),
@lose_rate float,
@item_sup_flag nvarchar(510),
@item_stock nvarchar(510),
@item_counter nvarchar(510),
@sup_ly_rate float,
@build_date smalldatetime,
@modify_date smalldatetime,
@stop_date smalldatetime,
@return_rate float,
@abc nvarchar(510),
@branch_price nvarchar(510),
@item_rem nvarchar(510),
@vip_price float,
@sale_min_price float,
@branch_no nvarchar(510),
@cost_compute nvarchar(510),
@com_flag nvarchar(510),
@base_price1 float,
@base_price2 float,
@base_price3 float,
@vip_acc_flag nvarchar(510),
@vip_acc_num float,
@dpfm_type nvarchar(510),
@trans_price float,
@vip_price1 float,
@vip_price2 float
fetch next from youbiao_qu13
while @@fetch_status=0
begin
fetch next from youbiao_qu13
into @item_no,@item_subno,@item_name,
@item_subname,@item_clsno,@item_brand,@item_brandname,
@unit_no,@item_size,@product_area,@price,@base_price,
@sale_price,@combine_sta,@status,@display_flag,@other1,@other2,
@other3,@num1,@num2,@num3,@po_cycle,@so_cycle,@automin_flag,@en_dis,
@direct,@change_price,@purchase_tax,@sale_tax,@purchase_spec,@shipment_spec,
@item_supcust,@main_supcust,@lose_rate,@item_sup_flag,@item_stock,@item_counter,
@sup_ly_rate,@build_date,@modify_date,@stop_date,@return_rate,@abc,@branch_price,
@item_rem,@vip_price,@sale_min_price,@branch_no,@cost_compute,
@com_flag,@base_price1,@base_price2,@base_price3,@vip_acc_flag,
@vip_acc_num,@dpfm_type,@trans_price,@vip_price1,@vip_price2
insert into dbo.t_bd_item_info_13 values (@item_no,@item_subno,@item_name,
@item_subname,@item_clsno,@item_brand,@item_brandname,
@unit_no,@item_size,@product_area,@price,@base_price,
@sale_price,@combine_sta,@status,@display_flag,@other1,@other2,
@other3,@num1,@num2,@num3,@po_cycle,@so_cycle,@automin_flag,@en_dis,
@direct,@change_price,@purchase_tax,@sale_tax,@purchase_spec,@shipment_spec,
@item_supcust,@main_supcust,@lose_rate,@item_sup_flag,@item_stock,@item_counter,
@sup_ly_rate,@build_date,@modify_date,@stop_date,@return_rate,@abc,@branch_price,
@item_rem,@vip_price,@sale_min_price,@branch_no,@cost_compute,
@com_flag,@base_price1,@base_price2,@base_price3,@vip_acc_flag,
@vip_acc_num,@dpfm_type,@trans_price,@vip_price1,@vip_price2)
end
close open youbiao_qu13
declare
@item_no nvarchar(510),
@item_subno nvarchar(510),
@item_name nvarchar(510),
@item_subname nvarchar(510),
@item_clsno nvarchar(510),
@item_brand nvarchar(510),
@item_brandname nvarchar(510),
@unit_no nvarchar(510),
@item_size nvarchar(510),
@product_area nvarchar(510),
@price float,
@base_price float,
@sale_price float,
@combine_sta nvarchar(510),
@status nvarchar(510),
@display_flag nvarchar(510),
@other1 nvarchar(510),
@other2 nvarchar(510),
@other3 nvarchar(510),
@num1 float,
@num2 float,
@num3 float,
@po_cycle float,
@so_cycle float,
@automin_flag nvarchar(510),
@en_dis nvarchar(510),
@direct nvarchar(510),
@change_price nvarchar(510),
@purchase_tax float,
@sale_tax float,
@purchase_spec float,
@shipment_spec float,
@item_supcust nvarchar(510),
@main_supcust nvarchar(510),
@lose_rate float,
@item_sup_flag nvarchar(510),
@item_stock nvarchar(510),
@item_counter nvarchar(510),
@sup_ly_rate float,
@build_date smalldatetime,
@modify_date smalldatetime,
@stop_date smalldatetime,
@return_rate float,
@abc nvarchar(510),
@branch_price nvarchar(510),
@item_rem nvarchar(510),
@vip_price float,
@sale_min_price float,
@branch_no nvarchar(510),
@cost_compute nvarchar(510),
@com_flag nvarchar(510),
@base_price1 float,
@base_price2 float,
@base_price3 float,
@vip_acc_flag nvarchar(510),
@vip_acc_num float,
@dpfm_type nvarchar(510),
@trans_price float,
@vip_price1 float,
@vip_price2 float
fetch next from youbiao_qu13
while @@fetch_status=0
begin
fetch next from youbiao_qu13
into @item_no,@item_subno,@item_name,
@item_subname,@item_clsno,@item_brand,@item_brandname,
@unit_no,@item_size,@product_area,@price,@base_price,
@sale_price,@combine_sta,@status,@display_flag,@other1,@other2,
@other3,@num1,@num2,@num3,@po_cycle,@so_cycle,@automin_flag,@en_dis,
@direct,@change_price,@purchase_tax,@sale_tax,@purchase_spec,@shipment_spec,
@item_supcust,@main_supcust,@lose_rate,@item_sup_flag,@item_stock,@item_counter,
@sup_ly_rate,@build_date,@modify_date,@stop_date,@return_rate,@abc,@branch_price,
@item_rem,@vip_price,@sale_min_price,@branch_no,@cost_compute,
@com_flag,@base_price1,@base_price2,@base_price3,@vip_acc_flag,
@vip_acc_num,@dpfm_type,@trans_price,@vip_price1,@vip_price2
insert into dbo.t_bd_item_info_13 values (@item_no,@item_subno,@item_name,
@item_subname,@item_clsno,@item_brand,@item_brandname,
@unit_no,@item_size,@product_area,@price,@base_price,
@sale_price,@combine_sta,@status,@display_flag,@other1,@other2,
@other3,@num1,@num2,@num3,@po_cycle,@so_cycle,@automin_flag,@en_dis,
@direct,@change_price,@purchase_tax,@sale_tax,@purchase_spec,@shipment_spec,
@item_supcust,@main_supcust,@lose_rate,@item_sup_flag,@item_stock,@item_counter,
@sup_ly_rate,@build_date,@modify_date,@stop_date,@return_rate,@abc,@branch_price,
@item_rem,@vip_price,@sale_min_price,@branch_no,@cost_compute,
@com_flag,@base_price1,@base_price2,@base_price3,@vip_acc_flag,
@vip_acc_num,@dpfm_type,@trans_price,@vip_price1,@vip_price2)
end
close open youbiao_qu13
呵呵。貌似当时是这么干的,通过更改表名,我就实现了数据的转移,但是似乎就是字段之类的有点问题,这么多字段,其实一个都不是我写的,是我用代码自动生成的,感觉自己手工写的话肯定有不少错误,但是最后还是有错误,就是不怎么行啊 ,在导入第三个库的时候,出现了问题,那么我就想其他的办法了。
似乎刚才经理交给我了一点东西,有什么用呢。我这么想着,肯定可以将数据全部导出到令以个表的,
它上门的where语句是1=0那么那条命令还是会全部的扫描整个表的,那好就这么写了于是就出现了相对上门更加超级简单的SQL语句,我的心啊 是贼啦的舒服。
select * into dbo.t_bd_item_info1
from dbo.t_bd_item_info
where item_no like'_____________'
一个个数据表在变更参数的时候都一个一个的出来了。真好。from dbo.t_bd_item_info
where item_no like'_____________'
好了 9个表出来了,全是13位的,然后就是吧那9个表合起来,好了数据库直接导入吧,在学校学的简单的操作又操作了一遍
9个变成一个了 下面我就要执行第二个阶段了,就是将这个表里面的相同编码的数据去价格最低的。好该怎么写还得怎么写憋屈了半天写了个贼啦长的SQL语句
先是一个游标:查找出什么自己应该可以看懂的饿
DECLARE youbiao_qudanjia CURSOR FOR
SELECT item_no,min(price) FROM dbo.t_bd_item_info_13_zongbiao
GROUP BY item_no order by item_no
好下面我们好好利用这个游标,怎么做呢 。。嘿嘿先把SQL语句给标上,让大家看看,能不能很简单的理解我写的SQL语句呢。我的思想其实很简单,就是照它要求的逻辑走。
open youbiao_qudanjia
DECLARE
@item_n nvarchar(510),
@pric float,
@item_no nvarchar(510),
@item_subno nvarchar(510),
@item_name nvarchar(510),
@item_subname nvarchar(510),
@item_clsno nvarchar(510),
@item_brand nvarchar(510),
@item_brandname nvarchar(510),
@unit_no nvarchar(510),
@item_size nvarchar(510),
@product_area nvarchar(510),
@price float,
@base_price float,
@sale_price float,
@combine_sta nvarchar(510),
@status nvarchar(510),
@display_flag nvarchar(510),
@other1 nvarchar(510),
@other2 nvarchar(510),
@other3 nvarchar(510),
@num1 float,
@num2 float,
@num3 float,
@po_cycle float,
@so_cycle float,
@automin_flag nvarchar(510),
@en_dis nvarchar(510),
@direct nvarchar(510),
@change_price nvarchar(510),
@purchase_tax float,
@sale_tax float,
@purchase_spec float,
@shipment_spec float,
@item_supcust nvarchar(510),
@main_supcust nvarchar(510),
@lose_rate float,
@item_sup_flag nvarchar(510),
@item_stock nvarchar(510),
@item_counter nvarchar(510),
@sup_ly_rate float,
@build_date smalldatetime,
@modify_date smalldatetime,
@stop_date smalldatetime,
@return_rate float,
@abc nvarchar(510),
@branch_price nvarchar(510),
@item_rem nvarchar(510),
@vip_price float,
@sale_min_price float,
@branch_no nvarchar(510),
@cost_compute nvarchar(510),
@com_flag nvarchar(510),
@base_price1 float,
@base_price2 float,
@base_price3 float,
@vip_acc_flag nvarchar(510),
@vip_acc_num float,
@dpfm_type nvarchar(510),
@trans_price float,
@vip_price1 float,
@vip_price2 float
FETCH NEXT FROM youbiao_qudanjia
INTO @item_n,@pric
SELECT top 1 @item_no=item_no,@item_subno=item_subno,@item_name=item_name,
@item_subname=item_subname,@item_clsno=item_clsno,@item_brand=item_brand,@item_brandname=item_brandname,
@unit_no=unit_no,@item_size=item_size,@product_area=product_area,@price=price,@base_price=base_price,
@sale_price=sale_price,@combine_sta=combine_sta,@status=status,@display_flag=display_flag,@other1=other1,@other2=other2,
@other3=other3,@num1=num1,@num2=num2,@num3=num3,@po_cycle=po_cycle,@so_cycle=so_cycle,@automin_flag=automin_flag,@en_dis=en_dis,
@direct=direct,@change_price=change_price,@purchase_tax=purchase_tax,@sale_tax=sale_tax,@purchase_spec=purchase_spec,@shipment_spec=shipment_spec,
@item_supcust=item_supcust,@main_supcust=main_supcust,@lose_rate=lose_rate,@item_sup_flag=item_sup_flag,@item_stock=item_stock,@item_counter=item_counter,
@sup_ly_rate=sup_ly_rate,@build_date=build_date,@modify_date=modify_date,@stop_date=stop_date,@return_rate=return_rate,@abc=abc,@branch_price=branch_price,
@item_rem=item_rem,@vip_price=vip_price,@sale_min_price=sale_min_price,@branch_no=branch_no,@cost_compute=cost_compute,
@com_flag=com_flag,@base_price1=base_price1,@base_price2=base_price2,@base_price3=base_price3,@vip_acc_flag=vip_acc_flag,
@vip_acc_num=vip_acc_num,@dpfm_type=dpfm_type,@trans_price=trans_price,@vip_price1=vip_price1,@vip_price2=vip_price2
FROM dbo.t_bd_item_info_13_zongbiao WHERE item_no=@item_n AND price=@pric
INsert into dbo.t_bd_item_info_13_zongbiao_2
VALUES(@item_no,@item_subno,@item_name,
@item_subname,@item_clsno,@item_brand,@item_brandname,
@unit_no,@item_size,@product_area,@price,@base_price,
@sale_price,@combine_sta,@status,@display_flag,@other1,@other2,
@other3,@num1,@num2,@num3,@po_cycle,@so_cycle,@automin_flag,@en_dis,
@direct,@change_price,@purchase_tax,@sale_tax,@purchase_spec,@shipment_spec,
@item_supcust,@main_supcust,@lose_rate,@item_sup_flag,@item_stock,@item_counter,
@sup_ly_rate,@build_date,@modify_date,@stop_date,@return_rate,@abc,@branch_price,
@item_rem,@vip_price,@sale_min_price,@branch_no,@cost_compute,
@com_flag,@base_price1,@base_price2,@base_price3,@vip_acc_flag,
@vip_acc_num,@dpfm_type,@trans_price,@vip_price1,@vip_price2)
CLOSE youbiao_qudanjia
DECLARE
@item_n nvarchar(510),
@pric float,
@item_no nvarchar(510),
@item_subno nvarchar(510),
@item_name nvarchar(510),
@item_subname nvarchar(510),
@item_clsno nvarchar(510),
@item_brand nvarchar(510),
@item_brandname nvarchar(510),
@unit_no nvarchar(510),
@item_size nvarchar(510),
@product_area nvarchar(510),
@price float,
@base_price float,
@sale_price float,
@combine_sta nvarchar(510),
@status nvarchar(510),
@display_flag nvarchar(510),
@other1 nvarchar(510),
@other2 nvarchar(510),
@other3 nvarchar(510),
@num1 float,
@num2 float,
@num3 float,
@po_cycle float,
@so_cycle float,
@automin_flag nvarchar(510),
@en_dis nvarchar(510),
@direct nvarchar(510),
@change_price nvarchar(510),
@purchase_tax float,
@sale_tax float,
@purchase_spec float,
@shipment_spec float,
@item_supcust nvarchar(510),
@main_supcust nvarchar(510),
@lose_rate float,
@item_sup_flag nvarchar(510),
@item_stock nvarchar(510),
@item_counter nvarchar(510),
@sup_ly_rate float,
@build_date smalldatetime,
@modify_date smalldatetime,
@stop_date smalldatetime,
@return_rate float,
@abc nvarchar(510),
@branch_price nvarchar(510),
@item_rem nvarchar(510),
@vip_price float,
@sale_min_price float,
@branch_no nvarchar(510),
@cost_compute nvarchar(510),
@com_flag nvarchar(510),
@base_price1 float,
@base_price2 float,
@base_price3 float,
@vip_acc_flag nvarchar(510),
@vip_acc_num float,
@dpfm_type nvarchar(510),
@trans_price float,
@vip_price1 float,
@vip_price2 float
FETCH NEXT FROM youbiao_qudanjia
INTO @item_n,@pric
SELECT top 1 @item_no=item_no,@item_subno=item_subno,@item_name=item_name,
@item_subname=item_subname,@item_clsno=item_clsno,@item_brand=item_brand,@item_brandname=item_brandname,
@unit_no=unit_no,@item_size=item_size,@product_area=product_area,@price=price,@base_price=base_price,
@sale_price=sale_price,@combine_sta=combine_sta,@status=status,@display_flag=display_flag,@other1=other1,@other2=other2,
@other3=other3,@num1=num1,@num2=num2,@num3=num3,@po_cycle=po_cycle,@so_cycle=so_cycle,@automin_flag=automin_flag,@en_dis=en_dis,
@direct=direct,@change_price=change_price,@purchase_tax=purchase_tax,@sale_tax=sale_tax,@purchase_spec=purchase_spec,@shipment_spec=shipment_spec,
@item_supcust=item_supcust,@main_supcust=main_supcust,@lose_rate=lose_rate,@item_sup_flag=item_sup_flag,@item_stock=item_stock,@item_counter=item_counter,
@sup_ly_rate=sup_ly_rate,@build_date=build_date,@modify_date=modify_date,@stop_date=stop_date,@return_rate=return_rate,@abc=abc,@branch_price=branch_price,
@item_rem=item_rem,@vip_price=vip_price,@sale_min_price=sale_min_price,@branch_no=branch_no,@cost_compute=cost_compute,
@com_flag=com_flag,@base_price1=base_price1,@base_price2=base_price2,@base_price3=base_price3,@vip_acc_flag=vip_acc_flag,
@vip_acc_num=vip_acc_num,@dpfm_type=dpfm_type,@trans_price=trans_price,@vip_price1=vip_price1,@vip_price2=vip_price2
FROM dbo.t_bd_item_info_13_zongbiao WHERE item_no=@item_n AND price=@pric
INsert into dbo.t_bd_item_info_13_zongbiao_2
VALUES(@item_no,@item_subno,@item_name,
@item_subname,@item_clsno,@item_brand,@item_brandname,
@unit_no,@item_size,@product_area,@price,@base_price,
@sale_price,@combine_sta,@status,@display_flag,@other1,@other2,
@other3,@num1,@num2,@num3,@po_cycle,@so_cycle,@automin_flag,@en_dis,
@direct,@change_price,@purchase_tax,@sale_tax,@purchase_spec,@shipment_spec,
@item_supcust,@main_supcust,@lose_rate,@item_sup_flag,@item_stock,@item_counter,
@sup_ly_rate,@build_date,@modify_date,@stop_date,@return_rate,@abc,@branch_price,
@item_rem,@vip_price,@sale_min_price,@branch_no,@cost_compute,
@com_flag,@base_price1,@base_price2,@base_price3,@vip_acc_flag,
@vip_acc_num,@dpfm_type,@trans_price,@vip_price1,@vip_price2)
CLOSE youbiao_qudanjia
数据库跑了接近一个小时,靠在旁边抽烟。结束后基本上的主要内容算完成了,还有就是编码了。根据什么编码我还要照人商量夏,明天或许今天晚上可以将它搞定 的饿。。。嘿嘿 看了下数据库真TMD帅哈哈。