我在编写好的陈述时遇到了一些麻烦。当我查询特定的“公司”但我想获得数据库中所有公司的价值时,我能够实现我想要的。
基本上我有3个表:Users,Companies,Plans_ExchangeMailbox。我需要做的是查询每个公司使用的计划数量。计划在用户表中的用户级别分配。
这是我的表格布局:
用户
DisplayName的
CompanyCode(这是Companies表中CompanyCode的ID)
MailboxPlan(这是Plans_ExchangeMailbox表中的ID)
公司
公司名称
企业编码
Plans_ExchangeMailbox
MailboxPlanName
MailboxPlanID
以下是我要生成的格式: CompanyName,MailboxPlanName,Count(这是公司的MailboxPlanID数)
我能够让这个工作,但问题是它一次只能做一家公司并且它没有获得CompanyName:
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
值:
Microsoft,Bronze Plan,5
微软,黄金计划,20
戴尔,青铜计划,3 戴尔,白银计划,80等.....
答案 0 :(得分: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
如果有不同的公司或具有相同名称的MailboxPlan,则由C.CompanyCode和E.MailboxPlanID分组。如果不是,您可以将其从GROUP BY clause
中删除。