為已存在的表增加欄位和補資料

2021-09-27 11:32:40 字數 2241 閱讀 7719

select * from  price where ddate >=convert(varchar(100), dateadd(month, -1, getdate()), 120)
查詢上月的今日日期 且格式化為yyyymm

-- 主計量單位插入

insert into base_storage_inrecord_copy1

(id,mid,code,num,warehouse,ctime,batch,orderid,unit,orderno,ordertype,postion,createuserid,cfree1,cfree2,cfree3,unittype,unit1,num2,converts)

select si.id,si.mid,si.code,si.num,si.warehouse,si.ctime,si.batch,si.orderid,si.unit,si.orderno,si.ordertype,si.postion,si.createuserid,si.cfree1,si.cfree2,si.cfree3,si.unittype,sd.cinva_unit,case when isnull(d.ichangrate,0) = 0 then 0 else (isnull(si.num,0)/isnull(d.ichangrate,0)) end as num2,d.ichangrate

from base_storage_inrecord si

left join base_stock_detail sd on si.code = sd.code

left join [ufdata_001_2019].dbo.inventory b on si.code=b.cinvcode

left join [ufdata_001_2019].dbo.computationgroup c on b.cgroupcode=c.cgroupcode

left join [ufdata_001_2019].dbo.computationunit d on b.ccomunitcode=d.ccomunitcode

where si.unit = sd.ccomunitname

-- 輔計量單位插入

insert into base_storage_inrecord_copy1

(id,mid,code,num,warehouse,ctime,batch,orderid,unit,orderno,ordertype,postion,createuserid,cfree1,cfree2,cfree3,unittype,unit1,num2,converts)

select si.id,si.mid,si.code,case when isnull(d.ichangrate,0) = 0 then 0 else (isnull(si.num,0)*isnull(d.ichangrate,0)) end as num,si.warehouse,si.ctime,si.batch,si.orderid,sd.ccomunitname,si.orderno,si.ordertype,si.postion,si.createuserid,si.cfree1,si.cfree2,si.cfree3,si.unittype,si.unit,si.num,d.ichangrate

from base_storage_inrecord si

left join base_stock_detail sd on si.code = sd.code

left join [ufdata_001_2019].dbo.inventory b on si.code=b.cinvcode

left join [ufdata_001_2019].dbo.computationgroup c on b.cgroupcode=c.cgroupcode

left join [ufdata_001_2019].dbo.computationunit d on b.ccomunitcode=d.ccomunitcode

where si.unit = sd.cinva_unit

遇到之前的表需要加欄位 ,需要把原來的資料裡面的這些字段填充且更改一些字段,所以預防錯誤的我,先insert into 臨時表 select 。。 去把資料先生成出來檢視 注意:有除法時記得非0 非null 如:,case when isnull(d.ichangrate,0) = 0 then 0 else (isnull(si.num,0)*isnull(d.ichangrate,0)) end as num

用case when 和isnull完美結合。

為已存在資料的表加主鍵

altertable 名 addcolumn 列名 int notnull auto incrementprimarykeycomment 主鍵 first 上面語句表示給某個 新增乙個自動增長的主鍵字段,並且將該字段放在第一列。如果你想放到其他列後面,可以將上面sql語句中的first換成afte...

sqlserver為已存在的表新增主鍵和索引預設值

新增主鍵 alter table 表名 add 主鍵列名 int identity 1,1 primary key 主鍵列名不存在時 alter table 表名 add constraint 主鍵名 主鍵名字不能重複 primary key 主鍵列名 主鍵列明存在時 新增預設值 alter tab...

Oracle修改已存在表的字段型別

1.若表中對應欄位不存在資料則直接修改 alter table 表名 modify 欄位名 varchar 20 2.若表中存在資料則不能直接修改 在表中增加乙個新的字段 alter table 表名 add 新欄位名 varchar2 20 將要修改的字段賦值給新增的字段 update 表名 se...