問題分析:您要的結(jié)果是要每一小時一條記錄,補充添寫中間間隔一小時以上的記錄。并且不另增加記錄:
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都做網(wǎng)站、迪慶州網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、迪慶州網(wǎng)絡(luò)營銷、迪慶州企業(yè)策劃、迪慶州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供迪慶州建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
問題解決:找到每一條記錄時間加1小時在表中不存在的記錄,然后加一小時填入表中,不包括最后(最大的)的時間。
3.語句實現(xiàn)(兩種方案):
以下語句可以在每一個缺少的數(shù)據(jù)后加入一小時后填入,但間隔更大(超過2小時后就不行了):
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ù)小時的記錄:將該語句循環(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)--去掉最后的時間
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)
咱們來看:
cast('000000000'+convert(int,code)as?varchar(20))
首先:
convert(int,code) :你把code 轉(zhuǎn)為 int
然后
'000000000'+convert(int,code)我估計sqlserver肯定把表達式作為數(shù)字相加了,那么0000...的相加就沒有作用了。
最后
就不是你要的結(jié)果了。
大致應(yīng)該這樣:
SELECT?
right(cast('000000000'+rtrim(code)?as?varchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0?
FROM?zlemployee
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表)