sql - 重复行并包含一个具有交替值的新列
问题描述
我有一张表格,将美国各州与其百万人口联系起来:
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
我不允许更改原始表格。
有没有办法做到这一点?
解决方案
你应该使用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
推荐阅读
- java - JNI EXCEPTION_ACCESS_VIOLATION (0xc0000005) msvcr100.dll+0x1ed7 仅适用于 Windows
- java - 如何意图指定用户的位置?
- java - 带有 json 的 HTTP POST - 错误的参数
- angularjs - 量角器——页面对象,出现错误无法读取未定义的属性“点击”。如何解决此错误?
- python - Python - 带有字典的 NumPy.Where
- python - App Engine Python Blobstore。上传图片时出错
- java - 如何使用 Java 将 3*3 矩阵转换为以下格式的 9*3 矩阵?
- jmeter - 在 Jmeter 上使用 perfmon - 通过进程名称监控问题
- java - 是否可以保存一些列表,每个列表都在 CSV 文件的另一列中?JAVA
- javascript - Javascript调用其他函数