У меня есть таблица SQL Server со следующими полями данных и выборки:SQL-сервер: Слияние строк данных в одной таблице на выходе
ID Name Address Age
23052-PF Peter Timbuktu 25
23052-D1 Jane Paris 22
23052-D2 David London 24
23050-PF Sam Beijing 22
23051-PF Nancy NYC 26
23051-D1 Carson Cali 22
23056-PF Grace LA 28
23056-D1 Smith Boston 23
23056-D2 Mark Adelaide 26
23056-D3 Hose Mexico 25
23056-D4 Mandy Victoria 24
Каждый идентификатор с -pf является уникальным в таблице.
Каждый идентификатор с -Dx связан с тем же идентификатором с -PF.
Каждый идентификатор с -PF может иметь 0 или более идентификаторов с -Dx.
Максимальное количество строк -dx для данного -pf равно 9.
т.е. идентификатор 11111-ПФ может иметь 11111-D1, D2-11111, 11111-D3 до 11111-D9.
Ожидаемый результат для приведенных выше данных образца:
ID ID (without suffix) PF_Name PF_Address PF_Age D_Name D_Address D_Age
23052-PF 23052 Peter Timbuktu 25 Jane Paris 22
23052-PF 23052 Peter Timbuktu 25 David London 24
23050-PF 23050 Sam Beijing 22 NULL NULL NULL
23051-PF 23051 Nancy NYC 26 Carson Cali 22
23056-PF 23056 Grace LA 28 Smith Boston 23
23056-PF 23056 Grace LA 28 Mark Adelaide 26
23056-PF 23056 Grace LA 28 Hose Mexico 25
23056-PF 23056 Grace LA 28 Mandy Victoria 24
мне нужно, чтобы иметь возможность присоединиться к -pF и -dx, как указано выше.
Если a -PF имеет 0 Dx строк, то столбцы D_Name, D_Address и D_Age на выходе должны возвращать NULL.
Если -PF имеет одну или несколько строк Dx, то PF_Name, PF_Address и PF_Age должны повторяться для каждой строки на выходе, а D_Name, D_Address и D_Age должны содержать значения из каждой связанной строки Dx.
Необходимо использовать MSSQL.
Запрос не должен использовать представления или создавать дополнительные таблицы.
Спасибо за вашу помощь!
взгляд на поворотном заявление – fnostro
Схема таблицы сломана. PF/D1/D2 должен иметь собственный столбец –
@JoelCoehoorn: не сломан, работает отлично. Конечно, вы можете поспорить с выбором дизайна, но он сам по себе не разбит. –