tsql - SQL 查询中的多个计数

标签 tsql sql-server-2000 group-by

给出如下简单的表结构:

Departments
PK - DeptID    DeptName
--------------------------
1              Department 1
2              Department 2
3              Department 3
4              Department 4

Groups
PK - GroupdID    DeptID
--------------------------
1                1
2                1
3                3 
4                4
5                2
6                3
7                1
8                3

Inventory
PK - ItemID    GroupID
--------------------------
1              2
2              3
3              8
4              1
5              4
6              5
7              1
8              2
9              2
10             3
11             7

有没有一种方法可以在不使用子查询的情况下(很简单)获得部门列表、每个部门的组数以及每个部门的库存数?

示例输出:

DeptID    DeptName          GroupCount      ItemCount
-----------------------------------------------------
1         Department 1      3               6
2         Department 2      1               1
3         Department 1      3               3
4         Department 4      1               1    

我的直觉告诉我,让 GROUP BY 语句正确只是一件简单的事情,但到目前为止我还是一片空白。如果确实需要使用子查询,这不是问题。我只是想确认以供将来引用。

注意:使用 SQL Server 2000 解决此特定问题

最佳答案

SELECT  d.deptID,
        COUNT(DISTINCT g.GroupID) AS Groups,
        COUNT(DISTINCT i.ItemID) AS Items
FROM    Departments d
LEFT JOIN 
        Groups g
ON      g.deptID = d.deptID
LEFT JOIN
        Items i
ON      i.GroupID = g.GroupID
GROUP BY
        d.deptID

产生的结果是:

deptID  Groups  Items
-----   ------  -----
1       3       6 
2       1       1
3       3       3
4       1       1

这也将为没有Groups 或只有GroupsDepartments 生成正确的0 > 没有 Items

关于tsql - SQL 查询中的多个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734305/

相关文章:

sql - 为每组选择随机行

sql - 在 SQL Server 中查询对话中用户的精确匹配

SQL 连接多个表

sql-server - 查询以在 SQL Azure 中生成按热门表列出的磁盘使用情况报告?

sql - 限制随机选择中的记录

sql - 更改列默认值

mysql - 如何分组并显示结果 sun 到 sat,MySQL PHP

SQL group by 无聚合

tsql - 设置 SQL Server 语法

sql - 如何识别插入语句的最后一行