如何在一张表中添加两个查询?

Posted

技术标签:

【中文标题】如何在一张表中添加两个查询?【英文标题】:How to add two queries together in one table? 【发布时间】:2016-12-08 12:29:27 【问题描述】:

我有两个 SQL 查询,我想在同一张表上加在一起。我想显示一个显示 JuniorCount、SeniorCount 和 DeptID 的表格。

现在,我有一些查询统计了具有部门级 ECE 的初级/高级,但我不确定如何将它们加在一起以显示在单独的列以及部门 ID 中。

SELECT COUNT(*) as JuniorCount
FROM (SELECT Class, DeptID FROM tblStudent WHERE Class = "Junior" AND DeptID = "ECE")


SELECT COUNT(*) as SeniorCount
FROM (SELECT Class, DeptID FROM tblStudent WHERE Class = "Senior" AND DeptID = "ECE")

【问题讨论】:

【参考方案1】:

这是你需要的

SELECT DeptID,
sum(case when Class = 'Junior' then 1 else 0 end) as JuniorCount,
sum(case when Class = 'Senior' then 1 else 0 end) as SeniorCount
FROM 
tblStudent WHERE DeptID = 'ECE'
Group by DeptID

在 MS 访问中

SELECT DeptID,
sum(IIF(Class = 'Junior' ,1,0)) as JuniorCount,
sum(IIF(Class = 'Senior' ,1,0)) as JuniorCount
FROM 
tblStudent WHERE DeptID = 'ECE'
Group by DeptID

【讨论】:

抱歉,您如何在 Access 中执行此操作? 查看我编辑的代码。我也为 MS ACCESS 添加了代码 @jarlh 谢谢。修复它 @Madhivanan,逗号,即复数。【参考方案2】:

您需要使用GROUP BY 来获取每个班级的总和。

SELECT Class, COUNT(*)
FROM tblStudent
WHERE Class IN('Junior', 'Senior')
AND AND DeptID = "ECE"
GROUP BY Class

(如果表中只有 Juniors 和 Seniors,则可以省略 CLASS IN 部分。)

【讨论】:

这不显示 DeptID,我需要将 JuniorCount 和 SeniorCount 作为单独的列而不是一列 @ChaCol,只需将 DeptID 添加到 SELECT 列表和 GROUP BY。 (仍然是单独的行。) 是的,但是如何将类分成列而不是行?就像我想要一列说 JuniorCount 和它下面的数字和第二列 SeniorCount 和它下面的数字

以上是关于如何在一张表中添加两个查询?的主要内容,如果未能解决你的问题,请参考以下文章

oracle中,如何在一张表插入数据,使得插入数据的某些字段为其他表中的数据

两张表 在一张表中插入数据时要使用触发器也更新另一张 有错误

oracle中从一张表中筛选出不再多个时间段内的时间

SQL问题,怎么将一张表的某个字段更新为另一张表的字段

sql查询:如何通过查询并且把查询的内容里添加到另外一张表里,并且添加自增ID。

oracle数据库如何查询一张表中BLOB字段中的内容