帮助SQL分组

时间:2009-09-10 19:06:36

标签: sql

我的输出的部分片段如下所示:

CNEP   P000000025 1
CNEP   P000000029 1
NONMAT P000000029 1
CNEP   P000000030 1
CWHCNP P000000030 1
MSN    P000000030 1

每行代表学生在特定课程中的术语。现在我正在对信息进行分组,以确保每个UserID仅与一个部分课程相关联。

请注意“P000000029”和“P000000030”如何包含多个条目。

我希望能够只显示系统中具有多种课程类型的学生。

2 个答案:

答案 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)