因此,在不知道您使用的数据库版本的情况下,我将只为您提供基础知识和可能在您的系统中工作的示例查询。
基本上,您正在考虑创建一个“透视查询”,但为了对您的查询执行此操作,您需要使用分析函数来指定从表 A 返回的每一行的行号:
select studentID,
parentID
row_number() over (partition by studentID order by studentID) as parentNum
FROM NormalizedFamily
order by studentID
然后使用您想要将数据透视查询放在一起的结果:
select studentID,
MAX(case when parentNum = 1 then parentID else null),
MAX(case when parentNum = 2 then parentID else null)
MAX(case when parentNum = 3 then parentID else null)
MAX(case when parentNum = 4 then parentID else null)
from (select studentID,
parentID
row_number() over (partition by studentID order by studentID) as parentNum
FROM NormalizedFamily
order by studentID)
您可能必须清理语法以使用数据库,但这是它的一般要点。