0

我很难找到一个好的陈述来写。当我查询特定的“公司”时,我能够实现我想要的,但我想获取数据库中所有公司的值。

基本上我有 3 个表:用户、公司、Plans_ExchangeMailbox。我需要做的是查询每家公司正在使用多少计划。计划在用户表中的用户级别分配。

这是我的表格布局:

用户

显示名称

CompanyCode(这是 Companies 表中 CompanyCode 的 ID)

MailboxPlan(这是 Plans_ExchangeMailbox 表中的 ID)

公司

公司名称

公司代码

计划_ExchangeMailbox

邮箱计划名称

邮箱计划ID

这是我要生成的格式:CompanyName、MailboxPlanName、Count(这是公司的 MailboxPlanID 数量)

我能够让这个工作,但问题是它一次只能做一家公司并且它没有获得公司名称:

SELECT
Plans_ExchangeMailbox.MailboxPlanName,
SUM(CASE WHEN Users.MailboxPlan = Plans_ExchangeMailbox.MailboxPlanId THEN 1 ELSE 0      END) AS PlanCount
FROM
Plans_ExchangeMailbox, Users
WHERE
Users.CompanyCode='CC0'
GROUP BY 
Plans_ExchangeMailbox.MailboxPlanName

最终格式应该如何:

标题:CompanyName、PlanName、Count

价值观:

微软,青铜计划,5

微软,黄金计划,20

戴尔,青铜计划,3

戴尔,白银计划,80

ETC.....

4

1 回答 1

0

尝试这个:

SELECT
     C.CompanyName,
     E.MailboxPlanName,
     COUNT(1) Cnt
FROM Companies C
    JOIN Users U
       ON C.CompanyCode = U.CompanyCode
    JOIN Plans_ExchangeMailbox E
       ON U.MailboxPlan = E.MailboxPlanID
GROUP BY 
     C.CompanyCode,
     C.CompanyName,
     E.MailboxPlanID,
     E.MailboxPlanName

以 C.CompanyCode 和 E.MailboxPlanID 分组,以防有不同的公司或 MailboxPlan 同名。如果没有,您可以将它们从GROUP BY clause.

于 2013-02-01T23:43:26.180 回答