Как вставить некоторые столбцы таблицы в новую запись с таким же значением других столбцов? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть таблица этапов со следующими примерами значений. Я хочу создать новую запись, если есть более одного имени или города вместе с другими столбцами. Как я могу это сделать?

Примеры значений:

id  pr  name1   city1   name2   city2   name3   city3   state   country
c1  p1  name11  city11  name21  city21  name31  city31  s1      country1
c2  p2  name12  city12  NULL    city22  NULL    NULL    s2      country2
c3  p3  name13  city13  NULL    NULL    NULL    NULL    s3      country3
c4  p4  name14  city14  name24  city24  name34  NULL    s4      country4
c5  p4  name15  city15  name25  city25  NULL    NULL    s5      country5

Ожидаемый результат:

id  pr  name    city    state   country
c1  p1  name11  city11  s1      country1
c1  p1  name21  city21  s1      country1
c1  p1  name31  city31  s1      country1
c2  p2  name12  city12  s2      country2
c2  p2  NULL    city22  s2      country2
c3  p3  name13  city13  s3      country3

Я попытался отменить поворот столбцов. Но это не сработало.

1 Ответ

3 голосов
/ 17 апреля 2020

Вы можете использовать apply, чтобы отключить данные:

select t.id, t.pr, v.name, v.city, t.state, t.country
from t cross apply
     (values (t.name1, t.city1), (t.name2, t.city2), (t.name3, t.city3)
     ) v(name, city)
where v.name is not null;
...