如果表中的 id 列是一個(gè)增量列,則要插入的數(shù)據(jù)包括 id 列的值,設(shè)置 identity table on; 插入到 table (id,xxx,... ,xxx) values (id column value,xxx,... ,xxx) ; -- 注意: 這里不能省略字段名。設(shè)置身份表;
成都創(chuàng)新互聯(lián)公司網(wǎng)絡(luò)公司擁有十載的成都網(wǎng)站開(kāi)發(fā)建設(shè)經(jīng)驗(yàn),上千家客戶(hù)的共同信賴(lài)。提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站開(kāi)發(fā)、網(wǎng)站定制、賣(mài)鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢(xún)和貼心的售后服務(wù)
sqlserver:
select right(cast('0000000000'+rtrim(字段) as varchar(20)),7)
oralce:
select lpad(字段, 7 , '0') from dual
DECLARE?@T?TABLE(日期?DATE,金額?INT)
DECLARE?@D1?DATE,@D2?DATE
SELECT?@D1=MIN(日期),@D2=MAX(日期)?FROM?A表
WHILE?@D1=@D2
BEGIN
INSERT?INTO?@T?VALUES(@D1,0)
SET?@D1=DATEADD(DAY,1,@D1)
END
SELECT?日期,金額?FROM?A表
UNION?ALL
SELECT?*?FROM?@T?WHERE?日期?NOT?IN(SELECT?日期?FROM?A表)
咱們來(lái)看:
cast('000000000'+convert(int,code)as?varchar(20))
首先:
convert(int,code) :你把code 轉(zhuǎn)為 int
然后
'000000000'+convert(int,code)我估計(jì)sqlserver肯定把表達(dá)式作為數(shù)字相加了,那么0000...的相加就沒(méi)有作用了。
最后
就不是你要的結(jié)果了。
大致應(yīng)該這樣:
SELECT?
right(cast('000000000'+rtrim(code)?as?varchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0?
FROM?zlemployee
select 表A.列A1,表A.列A2,表B.列B2
from 表A left join 表B on 表A.列A1=表B.列B1
問(wèn)題分析:您要的結(jié)果是要每一小時(shí)一條記錄,補(bǔ)充添寫(xiě)中間間隔一小時(shí)以上的記錄。并且不另增加記錄:
問(wèn)題解決:找到每一條記錄時(shí)間加1小時(shí)在表中不存在的記錄,然后加一小時(shí)填入表中,不包括最后(最大的)的時(shí)間。
3.語(yǔ)句實(shí)現(xiàn)(兩種方案):
以下語(yǔ)句可以在每一個(gè)缺少的數(shù)據(jù)后加入一小時(shí)后填入,但間隔更大(超過(guò)2小時(shí)后就不行了):
insert into tablename
select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a
where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime)
and a.fieldtime!=(select max(fieldtime) from tablename)--去掉最后的時(shí)間
以下方案可以完成補(bǔ)充間隔數(shù)小時(shí)的記錄:將該語(yǔ)句循環(huán)執(zhí)行,直到?jīng)]有記錄更改。
insert into tablename
select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a
where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime)
and a.fieldtime!=(select max(fieldtime) from tablename)--去掉最后的時(shí)間
while @@rowcount0
select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime) and a.fieldtime!=(select max(fieldtime) from tablename)