SQL 怎么填补空缺的数据?

SQL 怎么填补空缺的数据?,第1张

看你的需求,应该是一个应用软件中的需求。

既然这样数据库中是不是应该有个日期表?

如果没有建议建一张表,存放日期

tabledate:

2009-01

2009-02

2009-03

2009-04

2009-12

那么向新表插入的时候可以以此日期表为准

insert into table2(id,date,amount)

select table1id,table1date,table1amount

from tabledate left join table1 on tabledatedate=table1date

order by table1id,table1date

恩,结果和你想要的是有一些差别。就是如果ID和余额如果与上一条记录相同(注意上面的order by),那么就为空。余额还有个特殊情况,就是为0的时候也是为null

那么在插入的时候可以判断如果为Null就插入一个特殊值

再根据这个特殊值写几个Update语句去更新。

1、创建测试表,

create table test_num(id number, value number);

2、插入测试数据

insert into test_num values(1,15);

insert into test_num values(2,13);

insert into test_num values(3,132325);

insert into test_num values(4,157681);

commit;

3、查询表中数据,select t,rowid from test_num t;

4、编写sql,保留2位小数,如果整数 后面补0;

select t,

       case

         when not regexp_like(round(value, 2), '\D') then

          round(value, 2) || '00'

         else

          to_char(round(value, 2))

       end as value2

  from test_num t;

如果该列是char或者varchar类型 直接:

update 表名

set 列名='0'+列名

就可以

如果该列是数值型,可以用

update 表名

set 列名='0'+ltrim(rtrim(str(列名)))

原来sql还有个stuff的函数,很强悍。

一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4333,我要转换成3,120,4333这样的格式,就是去掉单引号和前导的0,用以下语句就可以。

SELECT

stuff(

substring

([当前组织],2,4),1,patindex('%[^0]%',substring([当前组织],2,4))-1,''),人员编码

FROM

dboorgusermap$

where

人员编码

is

not

null

咱们来看:

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

跟你说就知道了

定义一个char类型的变量@str,然后值@str='00000000'+@m这个@m要转成char类型的

然后插入的时候写 right(@str,5)

这里是取5位。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12181330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存