选择该组所有匹配的记录



我有一个学校表(在SQL Server中)

每个学校都有优先学科

学校A:

1 : Physics
2 : Math
3 : English

学校B:

1 : Math
2 : History

学校C:

1 : Physics
2 : Math
3 : English
4 : History 

学校D:

1 : Physics
2 : Math
3 : English

我想找到具有完全相同优先级的学校(在本例中为A和D)

我的表是这样的

ID  SchoolID  Pri_No  Subject
1   A         1       Physics
2   A         2       Math
3   A         3       English
4   B         1       Math
5   B         2       History
6   C         1       Physics
7   C         2       Math
8   C         3       English
9   C         4       History
10  D         1       Physics
11  D         2       Math
12  D         3       English

我建立了这个查询,但是它匹配的是主题基础而不是学校水平

SELECT  * FROM Schools A inner join Schools B on A.Pri_No=B.Pri_No and A.Subject=B.Subject and A.ID <> B.ID

你知道怎么做吗?

学校表名为Unis

单位是这样的

SchoolID SchoolName
A        Melbourne
B        Sydney
C        Brisbane
D        Darwin

一个简单的方法使用字符串聚合:

select subjects, string_agg(subject, ',') within group (order by schoolid) as schools
from (select schoolid,
string_agg(subject, ',') within group (order by pri_no) as subjects
from t
group by schoolid
) s
group by subjects;

相关内容

  • 没有找到相关文章