sql—复制行并包含具有交替值的新列

sauutmhj  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(248)

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

  1. State | Pop
  2. -----------+-------
  3. California | 39 M
  4. Texas | 29 M
  5. Florida | 21 M
  6. New York | 19 M
  7. Ohio | 11 M

我需要使用这个表来生成一个新表,其中每个原始行都有一个“a”和“b”行,即如下所示:

  1. State | Pop | Switch
  2. -----------+------+-------
  3. California | 39 M | a
  4. California | 39 M | b
  5. Texas | 29 M | a
  6. Texas | 29 M | b
  7. Florida | 21 M | a
  8. Florida | 21 M | b
  9. New York | 19 M | a
  10. New York | 19 M | b
  11. Ohio | 11 M | a
  12. Ohio | 11 M | b

我不能改变原来的table。
有办法吗?

6yt4nkrj

6yt4nkrj1#

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

  1. select
  2. *
  3. from myTable
  4. cross join (values ('a'), ('b')) as val (switch)

输出:

  1. state | pop | switch
  2. -----------+------+-------
  3. California | 39 M | a
  4. California | 39 M | b
  5. Texas | 29 M | a
  6. Texas | 29 M | b
  7. Florida | 21 M | a
  8. Florida | 21 M | b
  9. New York | 19 M | a
  10. New York | 19 M | b
  11. Ohio | 11 M | a
  12. Ohio | 11 M | b
展开查看全部
jmo0nnb3

jmo0nnb32#

这应该给你所需的输出在交替顺序的开关

  1. select state, pop, switch
  2. from (
  3. select state, pop, 'a' as switch
  4. from table
  5. union all
  6. select state, pop, 'b' as switch
  7. from table
  8. )x
  9. order by state, pop, switch;

相关问题