从其他表查询的数据添加到另一张表,没有数据的时候,怎么让其中的一个字段有值,其他为null

时间:2021-09-30 00:35:05
从其他表查询的数据添加到另一张表,没有数据的时候,怎么让其中的一个字段有值,其他为null
如图,查询出来的数据 是空的,但是我想生成一条数据,IHFDDepartment这个字段为84,其他都为null,怎么实现,只有insert into #A(a,b,c) select a,b,c from 表,这一种方法吗?

10 个解决方案

#1


引用 楼主 weimei521 的回复:
从其他表查询的数据添加到另一张表,没有数据的时候,怎么让其中的一个字段有值,其他为null
如图,查询出来的数据 是空的,但是我想生成一条数据,IHFDDepartment这个字段为84,其他都为null,怎么实现,只有insert into #A(a,b,c) select a,b,c from 表,这一种方法吗?


就这种办法就可以,这个办法有什么不好?

#2


这个意思?
IF ( SELECT TOP 1
            a
     FROM   表
   ) IS NULL   --判断是否有值
    BEGIN
        INSERT  INTO #A
                ( a, b, c )
        VALUES  ( 84, NULL, NULL )
    END
ELSE
    BEGIN
        INSERT  INTO #A
                ( a, b, c )
                SELECT  a ,
                        b ,
                        c
                FROM    表
    END

#3


Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

#4


Quote: 引用 2 楼 sinat_28984567 的回复:

这个意思?
可以不要用insert into吗,我想是不太想用这个方法,因为得加字段,字段超过30个

#5


生成这条数据不存储是吗?那就去掉insert 直接select 84 as 字段名,null ,null 这样的

#6


引用 5 楼 sinat_28984567 的回复:
生成这条数据不存储是吗?那就去掉insert 直接select 84 as 字段名,null ,null 这样的

好像full join 可以实现的

#7


引用 3 楼 weimei521 的回复:
Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用

SELECT  a ,
                        b ,
                        c
into #A
                FROM    表 


引用 3 楼 weimei521 的回复:
Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用select into啊

#8


楼主只Insert  IHFDDepartment 不可以吗,  其它未Insert自然是 null 值 ?



insert into #A(IHFDDepartment) Values (84)

#9


引用 7 楼 z10843087 的回复:
Quote: 引用 3 楼 weimei521 的回复:

Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用

SELECT  a ,
                        b ,
                        c
into #A
                FROM    表 


引用 3 楼 weimei521 的回复:
Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用select into啊

你还没看懂我的问题,select into  ,有可能是没有数据的,现在想要的就是即使是没有数据,IHFDDepartment这个值也要为84,其他为空

#10


你的主表就没有这条数据,如果一定要返回就改变主表

select * from (values('84')) c(IHFDDepartment)
left join IHSum as ihsum on ihsum. IHFDDepartment=c. IHFDDepartment
left join .....

#1


引用 楼主 weimei521 的回复:
从其他表查询的数据添加到另一张表,没有数据的时候,怎么让其中的一个字段有值,其他为null
如图,查询出来的数据 是空的,但是我想生成一条数据,IHFDDepartment这个字段为84,其他都为null,怎么实现,只有insert into #A(a,b,c) select a,b,c from 表,这一种方法吗?


就这种办法就可以,这个办法有什么不好?

#2


这个意思?
IF ( SELECT TOP 1
            a
     FROM   表
   ) IS NULL   --判断是否有值
    BEGIN
        INSERT  INTO #A
                ( a, b, c )
        VALUES  ( 84, NULL, NULL )
    END
ELSE
    BEGIN
        INSERT  INTO #A
                ( a, b, c )
                SELECT  a ,
                        b ,
                        c
                FROM    表
    END

#3


Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

#4


Quote: 引用 2 楼 sinat_28984567 的回复:

这个意思?
可以不要用insert into吗,我想是不太想用这个方法,因为得加字段,字段超过30个

#5


生成这条数据不存储是吗?那就去掉insert 直接select 84 as 字段名,null ,null 这样的

#6


引用 5 楼 sinat_28984567 的回复:
生成这条数据不存储是吗?那就去掉insert 直接select 84 as 字段名,null ,null 这样的

好像full join 可以实现的

#7


引用 3 楼 weimei521 的回复:
Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用

SELECT  a ,
                        b ,
                        c
into #A
                FROM    表 


引用 3 楼 weimei521 的回复:
Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用select into啊

#8


楼主只Insert  IHFDDepartment 不可以吗,  其它未Insert自然是 null 值 ?



insert into #A(IHFDDepartment) Values (84)

#9


引用 7 楼 z10843087 的回复:
Quote: 引用 3 楼 weimei521 的回复:

Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用

SELECT  a ,
                        b ,
                        c
into #A
                FROM    表 


引用 3 楼 weimei521 的回复:
Quote: 引用 1 楼 z10843087 的回复:

Quote: 引用 楼主 weimei521 的回复:

不好的地方就是 临时表要加字段,而select  into #A from 表 不需要在临时表加字段啊

那就用select into啊

你还没看懂我的问题,select into  ,有可能是没有数据的,现在想要的就是即使是没有数据,IHFDDepartment这个值也要为84,其他为空

#10


你的主表就没有这条数据,如果一定要返回就改变主表

select * from (values('84')) c(IHFDDepartment)
left join IHSum as ihsum on ihsum. IHFDDepartment=c. IHFDDepartment
left join .....