SQL Server 2008 解析未知数量的条目
由于可能性的数量,我不知道每个人将有多少门课程,也不知道课程的名称是什么,所以我无法使用正常的子选择或案例。
我有一个像这样的表:
ID NAME CLASS
----------------------
1 BOB Course1
1 BOB Course2
1 BOB Course3
2 JOHN Course1
2 JOHN Course2
3 SAM Course1
4 BILL Course2
4 BILL Course3
我想让它看起来像这样,其中最后一列是针对拥有最多类的人:
ID NAME CLASS CLASS2 CLASS3 CLASS4..........
------------------------------------------------------
1 BOB Course1 Course2 Course3 NULL............
2 JOHN Course1 Course2 NULL NULL............
3 SAM Course1 NULL NULL NULL............
4 BILL Course2 Couse3 NULL NULL............
我最好的想法是继续获取最大类并删除它,直到我用完记录。
编辑:澄清一下:我的列标题不是实际的课程,只是一种对教师分配的课程进行编号的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Abe 的建议如下所示:
给出的结果如下:
当然,这与您想要的略有不同......您希望课程 1 具有“第一道菜”的值。实现此目的的唯一方法是使用动态 SQL。
如果您想要一个以逗号分隔的课程列表(在一列中),那么生成起来会更容易、更快捷。
逗号列表
为您提供:
Abe's suggestion looks like this:
Which gives results like this:
Of course this is slightly different than what you want... you want course 1 to have a value for the "first course." The only way to do this is with dynamic SQL.
If you want a comma separated list of courses (in one column) that is much easier and faster to generate.
Comma list
Gives you:
您可以查看使用 PIVOT 的
详细信息:
http://msdn。 microsoft.com/en-us/library/ms177410.aspx
我相信您可以使用 ID 上的 MAX 作为聚合函数。
You can look at using a PIVOT
Read more about it here:
http://msdn.microsoft.com/en-us/library/ms177410.aspx
You can use MAX on ID as your aggregate function I believe.