首页 > 解决方案 > 重复行并包含一个具有交替值的新列

问题描述

我有一张表格,将美国各州与其百万人口联系起来:

State      | Pop
-----------+-------
California | 39 M
Texas      | 29 M
Florida    | 21 M
New York   | 19 M
Ohio       | 11 M

我需要使用这个表来生成一个新表,其中每个原始行都有一个“a”和“b”行,即看起来像这样:

State      | Pop  | Switch
-----------+------+-------
California | 39 M |   a
California | 39 M |   b
Texas      | 29 M |   a
Texas      | 29 M |   b
Florida    | 21 M |   a
Florida    | 21 M |   b
New York   | 19 M |   a
New York   | 19 M |   b
Ohio       | 11 M |   a
Ohio       | 11 M |   b

我不允许更改原始表格。

有没有办法做到这一点?

标签: sqlsql-server

解决方案


你应该使用cross join,这里是演示

select 
  *
from myTable
cross join (values ('a'), ('b')) as val (switch)

输出:

state      | pop  | switch
-----------+------+-------
California | 39 M |   a
California | 39 M |   b
Texas      | 29 M |   a
Texas      | 29 M |   b
Florida    | 21 M |   a
Florida    | 21 M |   b
New York   | 19 M |   a
New York   | 19 M |   b
Ohio       | 11 M |   a
Ohio       | 11 M |   b

推荐阅读