我必须使用不同的值填充一个表,所以我正在使用:
insert into A (pk1, pk2)
select pk1, pk2
from B
复杂的是,对于表B中的每个记录,其中一个值为Null,我想在表A中创建具有一些给定值的3个记录。由于列数是2,那么我将需要A x中的3 x 3 = 9条记录。
insert into A (pk1, pk2)
select isNull(pk1, 'value1' or 'value2' or 'value3'),
isNull(pk2, 'value4' or 'value5' or 'value6')
from B
上面的语法显然不正确,但只是为了让您了解我正在尝试做什么。由于我不是专家,诱惑是使用过程编程语言来做,但我敢打赌,有一种方法可以在SQL中实现。我正在使用MS SQL Server,如果这有任何区别。
答案 0 :(得分:1)
您可以创建一个表值函数,如果参数为null,则返回3行
bar
然后在您的select语句中使用6
:
create function dbo.ExpandIfNull (@value int)
returns table
as
return
(
select Value
from (values (1),(2),(3)) as v(Value)
where @value is null
union all
select @value
where @value is not null
)