【发布时间】:2019-07-27 02:13:00
【问题描述】:
我有 3 张桌子EMP, SCHOOL, JOB;结构和值是这样的:
CREATE TABLE SCHOOL
(
SCHOOLID CHAR(2),
STUDENTID SMALLINT,
GRADE CHAR(4)
);
CREATE TABLE JOB
(
JOBID SMALLINT UNIQUE NOT NULL,
JOBNAME CHAR(15)
);
CREATE TABLE EMP
(
EMPID SMALLINT,
JOBID SMALLINT,
SAL SMALLINT,
CITYID SMALLINT,
YEAR SMALLINT,
SCHOOLID CHAR(2),
SEX CHAR(1),
EMPCAT CHAR(2)
);
INSERT INTO SCHOOL(SCHOOLID, STUDENTID, GRADE)
VALUES ('S1', 10, 'PKG'),
('S1', 20, 'LKG'),
('S2', 10, 'PKG'),
('S2', 20, 'LKG'),
('S2', 30, '1ST'),
('S2', 30, '2ND');
INSERT INTO JOB(JOBID, JOBNAME)
VALUES (1, 'PRINCIPAL'),
(2, 'ASST PRINCIPAL'),
(3, 'TEACHING'),
(4, 'CLERICAL'),
(7, 'HELPER');
INSERT INTO EMP (EMPID , JOBID, SAL, CITYID, YEAR, SCHOOLID, SEX, EMPCAT)
VALUES (100, 1, 1000, 10, 2015, 'S1', 'M', 'A'),
(200, 2, 2000, 10, 2015, 'S1', 'M', 'B'),
(300, 1, 2500, 10, 2015, 'S1', 'F', 'A'),
(400, 1, 1000, 10, 2015, 'S2', 'M', 'B'),
(500, 1, 3000, 10, 2015, 'S2', 'F', 'A'),
(600, 3, 1000, 10, 2015, 'S2', 'M', 'A'),
(700, 3, 2000, 20, 2015, 'S2', 'F', 'A');
对于给定的输入 cityid , YEAR (Emp 表),获取所有不同的 SCHOOLID,并为每个 SCHOOLID 从 SCHOOL 表中获取不同的等级(所有等级需要连接并显示在单列中);
对于每个与 jobid (JOB) 匹配的 jobid (EMP),对于每个 jobname(来自 job table )以水平方式获取 EMPCAT 'A'、'B' 的每个性别(男性和女性)的计数;和总数。
输出应该是这样的:
CITYID SCHOOLID GRADES Jobname Male FEMALE TOTAL
A B A B
10 S1 PKG-LKG PRINCIPAL 1 0 1 0 2
10 S1 PKG-LKG ASST PRINCIPAL 0 1 0 0 1
10 S2 PKG-LKG-1ST PRINCIPAL 0 1 1 0 2
10 S2 PKG-LKG-1ST TEACHING 1 0 0 0 1
TOTAL 1 2 2 0 6
20 S2 PKG-LKG-1ST TEACHING 1 0 0 0 1
TOTAL 1 0 0 0 1
如何将单列中的学校成绩和水平方式的 EMPCAT 结果连接起来..?
【问题讨论】:
-
使用 SQL SERVER
-
使用一些报告工具或在客户端代码中处理不是更好吗?
-
可能会更好,但需要查询
-
您使用的是什么版本的 SQL Server?到目前为止,您尝试过什么?
标签: sql sql-server concatenation