我有一个学校表(在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;