存放原始資料的表,需要定期把歷史資料遷移並固定儲存下來,否則原始資料表越來越大,不利於資料的頻繁插入和查詢。
下面的sql語句是乙個儲存過程,每日0點執行,把前一天或前幾天的資料遷移到對應的月份表中。
use [prodms]
goset ansi_nulls on
goset quoted_identifier on
goalter proc [dbo].[splitoriginalvalue]
asbegin
declare @day
int,@month
int,@year
intdeclare @tbname varchar(35),@sql nvarchar(4000),@parmas nvarchar(2000)
select @day= datepart (dd,min(gettime)) ,@month=datepart(mm,min(gettime)),@year=datepart(year,min(gettime)) from cf_originaldata
if(@month
<10)
set @tbname='cf_originaldata_'+convert(varchar(4),@year)+'_0'+convert(varchar(2),@month)
else
set @tbname='cf_originaldata_'+convert(varchar(4),@year)+'_'+convert(varchar(2),@month)
--如果不存在該月份的表名需要新建乙個該月份的表
ifnotexists(select * from sysobjects where name=@tbname)
begin
set @sql='
create table '+@tbname+'
(autoid int identity (1,1) primary key,
ua decimal(10,2),
ub decimal(10,2),
uc decimal(10,2),
ia decimal(10,2),
ib decimal(10,2),
ic decimal(10,2),
py decimal(10,2),
qw decimal(10,2),
pf decimal(10,2),
ep decimal(12,2),
back varchar(5),
f decimal(10,2),
gettime datetime,
number nvarchar(20) )'
execute ( @sql)
endif @day
and @month=datepart(mm,getdate()) -- 判斷originaldata中最早的資料是否小於今天且是同乙個月的
begin
-- 插入資料到月份表中
set @sql=' insert into ' +@tbname+' (ua, ub, uc, ia, ib, ic, py, qw, pf, ep, back, f, gettime, number )
select ua, ub, uc, ia, ib, ic, py, qw, pf, ep, back, f, gettime, number from cf_originaldata
where convert(varchar(10),gettime,120)<= convert(varchar(10),dateadd(dd,-1,getdate()),120)'
execute ( @sql)
-- 刪除originaldata中的資料
delete
from cf_originaldata where convert(varchar(10),gettime,120)<= convert(varchar(10),dateadd(dd,-1,getdate()),120)
endelse -- 新的月份
begin
set @sql=' insert into ' +@tbname +'
( ua, ub, uc, ia, ib, ic, py, qw, pf, ep, back, f, gettime, number ) '
+ ' select ua, ub, uc, ia, ib, ic, py, qw, pf, ep, back, f, gettime, number from cf_originaldata where datepart(dd,gettime)= @days '
execute ( @sql)
-- 刪除originaldata中的資料
delete
from cf_originaldata where datepart(dd,gettime)= @day
and datepart(mm,gettime)= @month
and datepart(yyyy,gettime)= @year
endend
回爐重造,第三話 PHP順序控制
今天,陪姐姐去看樓,簽合同,這裡為自己鼓勵下,相信日後自己也能有屬於自己的房子 好啊,接下來,繼續學習php基礎知識 順序控制 順序控制即不加控制的流程,預設從上到下,從左到右執行 分支控制 簡單定義 有選擇的執行 1.單分支控制 if 條件表示式 判斷真假 小例子 age 18 if age 18...
SQL總結系列
總結sql基本知識 用法,並結合多年的應用對sql有關的相關知識進行總結。希望這些分享能給大家帶來一些幫助,如有不足或錯誤,請批評指正。2 查詢相關,包括基本查詢 分組排序 聚合函式 連表查詢 內連線 外連線 全連線 交叉連線 幾乎涵蓋常用查詢語句 3 實戰與練習,通過一些經典的題目,來挖掘如何處理...
SQL常用問題 分拆列值
分拆列值 原著 鄒建 改編 愛新覺羅.毓華 十八年風雨,守得冰山雪蓮花開 2007 12 16 廣東深圳 有表tb,如下 id value 1 aa,bb 2 aaa,bbb,ccc 欲按id,分拆value列,分拆後結果如下 id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc...