Dan*_*iel 3 sql t-sql sql-server sql-server-2008
我有一个包含学生编号和相应教师编号的简单表格,我需要对其进行非规范化以输入遗留系统.
例如,以下是数据现在的样子:
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
我希望它看起来像这样,将每个教师分成一个单独的列,从左到右填充列.一个商业规则是每个学生的教师不超过六名:
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多行,因此我需要以编程方式执行此操作.谢谢!
你可以使用pivot.你还需要"排名"你的老师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
Run Code Online (Sandbox Code Playgroud)
然后你可以转向这个声明.这是一个很好的解释:使用Pivot和UnPivot
归档时间: |
|
查看次数: |
6651 次 |
最近记录: |