#sql #sql-server #rdbms
#sql #sql-сервер #rdbms
Вопрос:
У меня есть следующая таблица MyTable
RequestId| Name|Phone| ContactEmail |RoleType| Address |TypeOfContact
1 | abc |123 |abc@gmail.com |null | NULL |Primary
1 | kbd |133 |kbd@gmail.com |A | Address1 |Local
Я могу сгладить вышеупомянутую проблему, используя следующий запрос:
SELECT a.Name as PrimaryName, a.ContactEmail as PrimaryEmail
,b.Name as LocalName,b.ContactEmail as LocalEmail
,b.Address as LocalAddress, b.RoleType as LocalRoleType
FROM MyTable a join MyTable on a.requestid=b.requestid
WHERE a.requestid=1 AND a.TypeOfContact='Primary' and b.TypeofContact='Local'
PrimaryName |PrimaryEmail | LocalName | LocalEmail |LocalRoleType |LocalAddress
abc |abc@gmail.com| kbd |kbd@gmail.com |A | Address1
Но проблема возникает, когда у меня один и тот же тип контакта несколько раз, как показано ниже:
RequestId| Name|Phone| ContactEmail |RoleType| Address |TypeOfContact
1 | abc |123 |abc@gmail.com |null | NULL |Primary
1 | kbd |133 |kbd@gmail.com |A | Address1 |Local
1 | vgk |999 | vgk@gmail.com |B | Address2 |Local
Если я использую следующий запрос, я получу 2 записи
SELECT a.Name as PrimaryName, a.ContactEmail as PrimaryEmail,b.Name as LocalName,b.ContactEmail as
LocalEmail1
,b.Address as LocalAddress, b.RoleType as LocalRoleType
FROM MyTable a join MyTableb on a.requestid=b.requestid
WHERE a.requestid=1 AND a.TypeofContact='Primary' and b.TypeofContact='Local'
PrimaryName |PrimaryEmail | LocalName |LocalEmail |LocalRoleType |LocalAddress
abc |abc@gmail.com| kbd |kbd@gmail.com |A | Address1
abc |abc@gmail.com| vgk |vgk@gmail.com |B | Address2
Вместо приведенного выше преобразования мне нужны динамические столбцы, чтобы я получал только 1 результирующий набор, такой как LocalName1, LocalName2, LocalEmail1, LocalEmail2, LocalAddress2 и т. Д. Следующим образом:
Требуемый формат данных:
PrimaryName |PrimaryEmail | LocalName1 |LocalEmail1 |LocalRoleType1 |LocalAddress1 |LocalName2|LocalContactEmail2 |LocalRoleType2 |LocalAddress2
abc |abc@gmail.com| kbd |kbd@gmail.com |A | Address1 |vgk |vgk@gmail.com | B | Address2
Комментарии:
1. Форматирование таблицы проблематично. Пожалуйста, найдите время, чтобы сделать таблицы удобочитаемыми.
2. @nicomp Я добавил скриншот.. Надеюсь, теперь таблицы доступны для чтения
3. @Aathira . , , Вы знаете, какие столбцы вы хотите в таблице результатов? Если вы этого не сделаете, вам нужно использовать динамический SQL.
4. @GordonLinoff Я не знаю имен столбцов, поэтому, как вы сказали, здесь будет применим динамический SQL