如果列包含值,则创建新记录

时间:2018-02-22 17:31:29

标签: sql sql-server tsql

想要知道我是否可以"人为地"当记录包含特定列的值时插入新记录。例如,假设我的数据库中包含以下两个记录:

Column1  Column2  Column3
-------------------------
DataA1   DataA2   null
DataB1   DataB2   DataB3

现在,如果有值,Column3是我想要触发额外行的列。 Column3基本上是Column2,但有另一个值(这是非规范化的,我无法改变它,所以我需要求助于查询)。所以我想创建一个使用上面的例子返回3行的查询,它应该是这样的:

DataA1   DataA2
DataB1   DataB2
DataB1   DataB3 

如何编写我的sql以返回上面的结果?

3 个答案:

答案 0 :(得分:4)

使用union all:

SELECT Column1, Column2
FROM TableName 
WHERE Column3 IS NULL

UNION ALL

SELECT Column1, Column3
FROM TableName 
WHERE Column3 IS NOT NULL

答案 1 :(得分:1)

不完全确定你想要什么,但我认为你正在寻找这样的东西。

select Column1
    , Column2
from SomeTable
where Column2 is not null

UNION ALL

select Column1
    , Column3
from SomeTable
where Column3 is not null

答案 2 :(得分:1)

当第三列不为null时,您可以使用UNION语句将使用第三列的结果集合并为第二列:

SELECT column1, column2
FROM Sample
UNION
SELECT column1, column3 
FROM Sample
WHERE column3 IS NOT NULL

http://sqlfiddle.com/#!9/42ca15/6