我有一个简单的表,其中包含学生编号和相应的教师编号,并且需要对它进行规范化,以输入到旧版系统中。
例如,下面是数据现在的样子:
StudNumber TeacherNumber 445 57315 445 88584 445 95842 858 88115 858 65443 858 57315 858 21144 858 18657 858 88584 311 64521 665 35512 665 57315 665 15546
我希望它看起来像这样,将每个Teacher分成一个单独的列,从左到右填充各列。一个业务规则是,每个学生最多只能有六位老师:
StudNum Teacher1 Teacher2 Teacher3 Teacher4 Teacher5 Teacher6 445 57315 88584 95842 858 88115 65443 57315 21144 18657 88584 311 64521 665 35512 57315 15546
原始表中有10,000多行,因此我需要以编程方式执行此操作。谢谢!
您可以使用数据透视。您还需要“排名”您的老师1-6。请参阅我对您要如何执行操作的评论。目前:
Select StudNumber, TeacherNumber, TeacherRank from ( Select ST.StudNumber , ST.TeacherNumber , ROW_NUMBER() OVER (PARTITION BY ST.StudNumber ORDER BY ST.TeacherNumber) AS TeacherRank From StudentTeacher AS ST) Where TeacherRank <=6
然后,您可以根据该语句进行操作。这是一个很好的解释:使用数据透视和取消透视