У меня есть таблица этапов со следующими примерами значений. Я хочу создать новую запись, если есть более одного имени или города вместе с другими столбцами. Как я могу это сделать?
Примеры значений:
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
Я попытался отменить поворот столбцов. Но это не сработало.
Вы можете использовать apply, чтобы отключить данные:
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;