我有一个非常简单的问题,在网上很难找到。也许我正在搜索不正确的关键字,所以我想停下来问问你们,因为你们的网站对我的学习很有帮助。看下面的场景:
从 mystudies 中选择 student,count(*) 作为 Total,(未知变量:book1、book2、book3、book4 等...)。
基本上,我想做的就是列出与总数匹配的唯一学生 ID 的所有书籍。有人可以为我指出正确的方向,读好书或其他任何东西,这样我就可以朝着正确的方向迈出一步吗?我假设它将通过左连接完成(不确定如何执行 x1、x2、x3 部分),然后只需通过唯一的学生 ID 号(无重复)将两者链接起来,但在线上的每个人都指向枢轴但出现枢轴将所有行放入列而不是一列。SQL server 2005 是首选平台。
谢谢!
对不起
以下查询为表中所有重复条目生成我的唯一 ID(学生)和学生计数:
select student, count(*) as Total
from mystudies
group by student order by total desc
我不知道的部分是如何在表唯一 id (boookid) 上创建左连接
select mystudies1.student, mystudies1.total, mystudies2.bookid
from ( select student, count(*) as Total
from mystudies
group by student
) mystudies1
left join
( select student, bookid
from mystudies
) mystudies2
on mystudies1.student=mystudies2.student
order by mystudies1.total desc, mystudies1.student asc
显然,上面的行将产生类似于以下的结果:
Student Total BookID
000001 3 100001
000001 3 100002
000001 3 100003
000002 2 200001
000002 2 200002
000003 1 300001
但我真正想要的是类似于以下内容:
Student Total BookID
000001 3 100001, 100002, 100003
000002 2 200001, 200002
000003 1 300001
我认为它必须在左连接中完成,这样它就不会改变对学生执行的实际计数。谢谢!