我的输出的部分片段如下所示:
CNEP P000000025 1
CNEP P000000029 1
NONMAT P000000029 1
CNEP P000000030 1
CWHCNP P000000030 1
MSN P000000030 1
每行代表学生在特定课程中的术语。现在我正在对信息进行分组,以确保每个UserID仅与一个部分课程相关联。
请注意“P000000029
”和“P000000030
”如何包含多个条目。
我希望能够只显示系统中具有多种课程类型的学生。
答案 0 :(得分:2)
假设列被命名为courses和userid(不知道第三列是什么;-),您可以通过以下方式获取感兴趣的用户ID:
select userid
from thetable
group by userid
having count(distinct curriculum) > 1
以及有关通过in
选择的用户ID的其他信息,加入以及与往常类似的操作。
答案 1 :(得分:0)
我认为您不会在示例数据中显示任何学生信息。但您仍然可以使用它来查找具有倍数的组(SQL Server示例代码,但查询几乎可以在任何地方使用):
DECLARE @YourTable table (col1 varchar(10), col2 char(10), col3 int)
INSERT INTO @YourTable VALUES ('NEP','P000000025',1)
INSERT INTO @YourTable VALUES ('CNEP','P000000029',1)
INSERT INTO @YourTable VALUES ('NONMAT','P000000029',1)
INSERT INTO @YourTable VALUES ('CNEP','P000000030',1)
INSERT INTO @YourTable VALUES ('CWHCNP','P000000030',1)
INSERT INTO @YourTable VALUES ('MSN','P000000030',1)
SELECT
col1,COUNT(*) AS CountOf
FROM @YourTable
GROUP BY col1
HAVING COUNT(col2)>1
输出
col1 CountOf
---------- -----------
CNEP 2
(1 row(s) affected)