sql - 使用动态列名在 SQL 中展平表
问题描述
我有下表 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
但是当我多次使用相同的 TypeOfContact 时,问题就来了,如下所示:
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
解决方案
推荐阅读
- apache-nifi - 如何使用 PutDatabaseReader 将多个记录 JSON 数组摄取到 SQL Server
- javascript - 如何在浏览器解析阶段检测 JavaScript 错误以显示友好的错误页面?
- php - PHP拆分然后合并
- python - 在熊猫中处理日期
- python - 将 matplotlib 与乳胶一起使用时字体粗细不同
- sql - 如何在sql中使用带有to_date的substr函数?
- shell - 为隐含的空白字段附加分隔符
- autodesk-forge - Bim360 api - 429 - 请求过多
- c# - Debug.WriteLine 命令没有出现任何输出
- php - html 表单 - php 函数没有