Это честно чувствует, как беспорядок но это лучший ответ, который я могу придумать. То, что я делаю ниже, разбивает каждый столбец на уникальную таблицу. Затем я выполняю функцию группировки в таблице, нахожу самое последнее значение Non Null для каждого столбца и присоединяюсь к столбцам на основе PrimaryMobile. Кроме того, как примечание, так как вы не дали имя таблицы, я буду считать, имя таблицы «Человек»
SQL
Select Max(Person.PersonID),
Person.PrimaryMobile,
FNameSet.FirstName,
LNameSet.LastName,
CitySet.City,
DateSet.DateCreated
From Person
Left Outer Join (Select FNamePerson.PersonID,
FNamePerson.PrimaryMobile,
FNamePerson.FirstName,
FNameRowID = ROW_NUMBER() OVER (PARTITION BY FNamePerson.PrimaryMobile ORDER BY FNamePerson.PersonID DESC)
From Person FNamePerson
Where FNamePerson.FirstName Is Not Null) FNameSet
On Person.PrimaryMobile = FNameSet.PrimaryMobile
Left Outer Join (Select LNamePerson.PersonID,
LNamePerson.PrimaryMobile,
LNamePerson.LastName,
LNameRowID = ROW_NUMBER() OVER (PARTITION BY LNamePerson.PrimaryMobile ORDER BY LNamePerson.PersonID DESC)
From Person LNamePerson
Where LNamePerson.LastName Is Not Null) LNameSet
On Person.PrimaryMobile = LNameSet.PrimaryMobile
Left Outer Join (Select CityPerson.PersonID,
CityPerson.PrimaryMobile,
CityPerson.City,
CityRowID = ROW_NUMBER() OVER (PARTITION BY CityPerson.PrimaryMobile ORDER BY CityPerson.PersonID DESC)
From Person CityPerson
Where CityPerson.City Is Not Null) CitySet
On Person.PrimaryMobile = CitySet.PrimaryMobile
Left Outer Join (Select DatePerson.PersonID,
DatePerson.PrimaryMobile,
DatePerson.DateCreated,
DateRowID = ROW_NUMBER() OVER (PARTITION BY DatePerson.PrimaryMobile ORDER BY DatePerson.PersonID DESC)
From Person DatePerson
Where DatePerson.DateCreated Is Not Null) DateSet
On Person.PrimaryMobile = DateSet.PrimaryMobile
Where FNameRowID = 1
And LNameRowID = 1
And CityRowID = 1
And DateRowID = 1
Group By Person.PrimaryMobile,
FNameSet.FirstName,
LNameSet.LastName,
CitySet.City,
DateSet.DateCreated
Примечание, однако, что это решение будет удалить номер если один столбцов не имеет никакой ценности, связанной с его группой. т.е. если вы удалили NEW из столбца FirstName вашего набора данных, вы не получите второе число в своем результирующем наборе.
Я не вижу никакой логики, которая приведет ко второму изображению. Вам действительно нужно объяснить, что вы хотите. –
Просто подумайте, но не должно ли поле для FirstName для PersonID из 5 быть равно «NULL» и такое же для поля LastName для PersonID из 3? – hRdCoder
Пожалуйста, возьмите relook, поскольку я обновил второй результат image – user1155773