我正在尝试获取一个人的所有电话、电子邮件和组织,并以平面文件格式显示。应该有 n 行,其中 n 是组织、电子邮件或电话的最大数量。一旦所有值都显示在行中,就会显示 NULL 值,NULL 是最后一个值。电子邮件和电话每人只能有 1 个 PreferredInd。我希望它们位于同一行(其中 1 个可以为 NULL)。我尝试在更复杂的查询上执行此操作,但无法使其正常工作,因此我重新开始使用这个更简单的示例。
示例表和值:
@ContactPerson
Id Name
1 John Doe
@ContactEmail
Id PersonId Email PreferredInd
1 1 johndoe@us.gov 0
2 1 jdoe@us.gov 1
3 1 johndoe@gmail.com 0
@ContactPhone
Id PersonId Phone PreferredInd
1 1 888-867-5309 0
2 1 305-476-5234 1
@ContactOrganization
Id PersonId Organization
1 1 US Government
2 1 US Army
我希望结果集看起来像:
Name Organization PreferredInd Email Phone
John Doe US Government 1 jdoe@us.gov 888-867-5309
John Doe US Army 0 johndoe@us.gov 305-467-5234
John Doe NULL 0 johndoe@gmail.com NULL
我在此示例中拥有的完整 sql 代码位于 pastebin 上。它还包括用于创建示例表的代码。当电子邮件的数量超过组织或电话的数量时,它会起作用,但这并不总是正确的。我似乎无法弄清楚如何获得我正在寻找的结果。我正在使用的实际表格每人可以有 0 个或无限个电子邮件、电话或组织。还会有更多的值,但我可以自己解决。
你能帮我解决我的查询或告诉我一个更简单的方法吗?如果您有任何问题,请告诉我,我可以尝试回答。