27,580
社区成员
发帖
与我相关
我的任务
分享
WITH CTE AS(
SELECT * FROM 用户志愿表
)
,CTE2 AS(
SELECT 批次,志愿代码,学校,专业1,'专业1'[专业],用户 FROM CTE
UNION ALL
SELECT 批次,志愿代码,学校,专业2,'专业2'[专业],用户 FROM CTE
UNION ALL
SELECT 批次,志愿代码,学校,专业3,'专业3'[专业],用户 FROM CTE
UNION ALL
SELECT 批次,志愿代码,学校,专业4,'专业4'[专业],用户 FROM CTE
UNION ALL
SELECT 批次,志愿代码,学校,专业5,'专业5'[专业],用户 FROM CTE
UNION ALL
SELECT 批次,志愿代码,学校,专业6,'专业6'[专业],用户 FROM CTE
)
SELECT'' 批次,T1.专业 志愿代码,T1.专业1 学校,MAX(T3.分数)最高分,MIN(T3.分数)最低分,T1.批次 批次OD,T1.志愿代码 志愿代码OD,T1.学校 学校OD,2 OD
FROM CTE2 T1
JOIN CTE2 T2 ON T1.批次=T2.批次 AND T1.志愿代码=T2.志愿代码 AND T1.学校=T2.学校 AND T1.专业=T2.专业
JOIN 用户表 T3 ON T2.用户=T3.用户
WHERE T1.用户='小明'AND T1.专业1 IS NOT NULL AND T2.专业1 IS NOT NULL
GROUP BY T1.批次,T1.志愿代码,T1.学校,T1.专业1,T1.专业
UNION ALL
SELECT T1.批次,T1.志愿代码,T1.学校,MAX(T3.分数)最高分,MIN(T3.分数)最低分,T1.批次,T1.志愿代码,T1.学校,1 OD
FROM 用户志愿表 T1
JOIN 用户志愿表 T2 ON T1.批次=T2.批次 AND T1.志愿代码=T2.志愿代码 AND T1.学校=T2.学校
JOIN 用户表 T3 ON T2.用户=T3.用户
WHERE T1.用户='小明'
GROUP BY T1.批次,T1.志愿代码,T1.学校
ORDER BY 批次OD,志愿代码OD,学校OD,OD
整合在一起的效果如上,可以根据页面需要分离成两个查询
另外,建议 把 专业分离成一个子表,针对你的查询,还是要列转行不方便