使用CTE在SQL中生成测试数据

Joe*_*Joe 3 sql postgresql select common-table-expression

我正在尝试使用 CTE 为 SQL (postgresql) 中的单元测试生成数据表。

WITH temp1 AS (
SELECT
  ('A', 'A', 'B', 'B') AS grp,
  (1, 2, NULL, 1) AS outcome
)

SELECT * 
FROM temp1
Run Code Online (Sandbox Code Playgroud)

上面的查询生成单行而不是对我的单元测试有用的 4 行表。如何生成以下形式的 4 行表:

grp.....outcome
A.......1
A.......2
B.......NULL
B.......1
Run Code Online (Sandbox Code Playgroud)

GMB*_*GMB 6

您可以只使用values()语法来创建行,如下所示:

with temp1(grp, outcome) as (values ('A', 1), ('A', 2), ('B', null), ('B', 1))
select * from temp1
Run Code Online (Sandbox Code Playgroud)

DB Fiddle 演示

组 | 结果
:-- | ------:
一个 | 1
一个 | 2
乙|    无效的
乙| 1