SQL Server - 使用多个表的COUNT语句很困难

时间:2016-08-03 23:58:03

标签: sql-server select count

我对下面的陈述有困难。我尝试过多种方式编写,但会相应地收到不同的错误。我希望将结果输出到单个表中,每个计数都在一个单独的(但相邻的)列中,就像这样......

 --------+--------+--------
| alias1 | alias2 | alias3 |
 --------+--------+--------
| count1 | count2 | count3 |
 --------+--------+--------

方法1:

SELECT COUNT(*) 
FROM AdventureWorks2012.HumanResources.Department AS Alias1
, (SELECT COUNT(*) 
    FROM AdventureWorks2012.HumanResources.Employee) AS Alias2
, (SELECT COUNT(*)  
    FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) AS Alias3

这会在Alias2(和Alias3)上返回一个错误,说明"没有为第1列' Alias2'""

指定列

然后我尝试按如下方式重做:

SELECT COUNT(*) 
FROM AdventureWorks2012.HumanResources.Department AS Alias1
, (SELECT COUNT(*) AS Alias2
    FROM AdventureWorks2012.HumanResources.Employee) 
, (SELECT COUNT(*) AS Alias3
    FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) 

错误转移到','将SELECT语句与错误分开,"','附近的语法错误。期待AS,ID或QUOTED_ID。"

我试图做的事似乎很简单,但我是空洞的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

SELECT 
    (SELECT COUNT(*) FROM AdventureWorks2012.HumanResources.Department)  AS Alias1, 
    (SELECT COUNT(*) FROM AdventureWorks2012.HumanResources.Employee) AS Alias2, 
    (SELECT COUNT(*) FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) AS Alias3

答案 1 :(得分:0)

获得所需结果的一种方法是将每个语句用作派生表:

SELECT * FROM 
(SELECT COUNT(*) AS Alias1 FROM AdventureWorks2012.HumanResources.Department) AS a1 , 
(SELECT COUNT(*) AS Alias2 FROM AdventureWorks2012.HumanResources.Employee) AS a2, 
(SELECT COUNT(*) AS Alias3 FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) AS a3

(或者您可以将这些语句用作子查询,如另一个答案中所示)