繁体   English   中英

一个稍微复杂的 UNION ALL 问题 - SQL

[英]a slightly complicated UNION ALL problem - SQL

我有一个像这样的 CSV:

company_name | Address | person1      | person2     | person3     | ... | person34 |
____________________________________________________________________________________________

stackoverflow| USA     | Brian Guan   |             |             | ... |          |
google       | Cali, US|  John Smith  | James Smith | Ron Swanson | ... | 34th member |

换句话说,每一行可以有更多的列,这取决于他们是否有更多的团队成员。 我想做的是某种联合,以便所有团队成员都在一个列中,但每一行仍然有必要的公司名称和地址信息。 换句话说,我想这样得到它”

company_name | Address | person      |
_______________________________________
stackoverflow| USA     | Brian Guan   |
google       | Cali, US|  John Smith  |
google       | Cali, US| James Smith  |
google       | Cali, US|  Ron Swanson |
.
.
.
google       | Cali, US|  34th member |

我知道最大的团队有 34 人,但我很难理解这一点。 任何帮助,将不胜感激!

一种方法是:

select company_name, address, person1 as person
from t
where person1 is not null
union all
select company_name, address, person2
from t
where person2 is not null
. . .

继续所有列。 如果您不想自己输入所有代码,可以使用电子表格来构建代码。

SQL 的编写方式是为了鼓励基于集合的思维,与 java 之类的语言相比,您可以对集合进行操作,例如联合、位置等,在这种语言中,您倾向于迭代地做事 - 使用 for 循环或任何。

你这里有一个包含很多列的数据集,你想要做的是 go 通过并将每一列视为自己的行。 这种操作比基于集合的语言(如 SQL)更适合迭代语言,所以也许您想使用其他语言?

否则,有些方法涉及手动指定每一列,例如由 Phil 或 Gordon 链接的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM