немного сложная задача UNION ALL - SQL - PullRequest
0 голосов
/ 10 июля 2020

У меня есть такой 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 человека, но у меня проблемы с этим. Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

SQL написан таким образом, чтобы поощрять мышление, основанное на множествах, когда вы выполняете операции с множествами, такие как union, where, et c, по сравнению с языком, подобным java, где вы обычно делать что-то итеративно - используя для l oop или что-то еще.

То, что у вас есть, это набор данных с большим количеством столбцов, и вы хотите сделать go через и обработать каждый столбец как отдельная строка. Этот вид операций лучше подходит для итеративного языка, чем для языка на основе наборов, например SQL, так что, может быть, вы хотите использовать какой-то другой язык?

В противном случае есть подходы, которые включают указание каждого столбца вручную, например один связан Филом или Гордоном

0 голосов
/ 10 июля 2020

Один из способов:

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
. . .

Просто продолжайте для всех столбцов. Вы можете использовать электронную таблицу для создания кода, если не хотите набирать его самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...