如何使用SQL满足特殊条件时插入两行?

How to insert two rows when a special condition is met using SQL?

基本上我的情况是这样的:

对于 table 中的每一行,我必须获取其中一列的值并将其插入到新的 table。

这是一个简单的查询:

SELECT val
INTO NEW_TABLE
FROM SOURCE_TABLE;

但是,我有一个问题。在某些情况下,我想为同一个条目插入两行。

我可以使用以下三个查询来实现它:

SELECT 'val'
INTO NEW_TABLE
FROM SOURCE_TABLE WHERE NOT SPECIAL_CONDITION;

SELECT 'special_val1'
INTO NEW_TABLE
FROM SOURCE_TABLE WHERE SPECIAL_CONDITION;

SELECT 'special_val2'
INTO NEW_TABLE
FROM SOURCE_TABLE WHERE SPECIAL_CONDITION;

但是有没有办法只用一个就可以做到这一点?

我想到了这样的事情(可能行不通,因为我没有测试过):

INSERT INTO NEW_TABLE 
( 
    (SELECT 'val' FROM SOURCE_TABLE WHERE NOT CONDITION)

    UNION

    (SELECT 'val1' FROM SOURCE_TABLE WHERE CONDITION)

    UNION

    (SELECT 'val2' FROM SOURCE_TABLE WHERE CONDITION)
)

但最终冗长是可以的,如果它最终会更有效率的话。 那么有没有一种更有效的方法可以通过单个查询来做到这一点?

这是你想要的吗?

SELECT *
INTO NEW_TABLE 
FROM (SELECT (CASE WHEN condition THEN 'val1' ELSE 'val' END) as val
      FROM SOURCE_TABLE
      UNION ALL
      SELECT 'val2'
      FROM SOURCE_TABLE
      WHERE CONDITION
     ) t;