【发布时间】:2019-06-27 01:35:32
【问题描述】:
我插入了一个查询来显示公司每个分支机构的主管、男性和女性员工的总数。但是,我的查询中有一个错误,我不知道如何解决它......请帮助我,提前谢谢。
SELECT b.brc_id AS 'Branch ID',
s.stf_first_name AS 'Manager First Name',
s.stf_last_name AS 'Manager Last Name',
(SELECT COUNT (sa.stf_position)
FROM STAFF_T sa, BRANCH_T ba
WHERE (sa.stf_position = 'Supervisor')
GROUP BY ba.brc_id, sa.stf_first_name, sa.stf_last_name) AS
'Number of Supervisor',
(SELECT COUNT (sb.stf_position)
FROM STAFF_T sb, BRANCH_T bb
WHERE (sb.stf_position = 'Staff') AND (sb.stf_gender = 'Male')
GROUP BY bb.brc_id, sb.stf_first_name, sb.stf_last_name) AS 'Male
Staff',
(SELECT COUNT (sc.stf_position)
FROM STAFF_T sc, BRANCH_T bc
WHERE (sc.stf_position = 'Staff') AND (sc.stf_gender = 'Female')
GROUP BY bc.brc_id, sc.stf_first_name, sc.stf_last_name) AS
'Female Staff'
FROM
BRANCH_T b, STAFF_T s
WHERE
(b.brc_id = s.stf_brc_id) AND (b.brc_manager = s.stf_id)
GROUP BY
b.brc_id, s.stf_first_name, s.stf_last_name
输出应显示公司每个分支机构的主管人数、男性和女性员工总数。但是弹出如下错误信息,
消息 512,第 16 级,状态 1,第 57 行
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的
【问题讨论】:
-
请提供样本数据、所需结果和适当的数据库标签。
-
也应该添加你的shema
-
我认为它返回多条记录,因为它被分组在一个子查询中。由于它们已经在主查询中分组,因此您不必使用子查询。
-
@mmukai 但是如果我这样做,输出将显示整个数据库的主管,男性和女性员工的总数。我希望它根据分支 ID 显示数字
-
您可以使用
CASE子句指定条件。 stackoverflow.com/questions/56764963/…这里好像已经有了答案,不过类似的东西也是我的看法。如果没有显示示例数据和您的预期结果,虽然我们可以猜测,但很难回答。
标签: sql-server database subquery