問題分析:您要的結果是要每一小時一條記錄,補充添寫中間間隔一小時以上的記錄。并且不另增加記錄:
成都創新互聯公司專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站設計、成都做網站、迪慶州網絡推廣、微信平臺小程序開發、迪慶州網絡營銷、迪慶州企業策劃、迪慶州品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯公司為所有大學生創業者提供迪慶州建站搭建服務,24小時服務熱線:13518219792,官方網址:m.kartarina.com
問題解決:找到每一條記錄時間加1小時在表中不存在的記錄,然后加一小時填入表中,不包括最后(最大的)的時間。
3.語句實現(兩種方案):
以下語句可以在每一個缺少的數據后加入一小時后填入,但間隔更大(超過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)--去掉最后的時間
以下方案可以完成補充間隔數小時的記錄:將該語句循環執行,直到沒有記錄更改。
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 轉為 int
然后
'000000000'+convert(int,code)我估計sqlserver肯定把表達式作為數字相加了,那么0000...的相加就沒有作用了。
最后
就不是你要的結果了。
大致應該這樣:
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表)
本文名稱:sqlserver補齊,sqlserver自動補全
瀏覽地址:http://m.kartarina.com/article46/dsesghg.html
成都網站建設公司_創新互聯,為您提供標簽優化、響應式網站、企業建站、App設計、軟件開發、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯