当前位置: 首页 > 面试题库 >

在COUNT = 0的SQL Server中显示行

严瑞
2023-03-14
问题内容

以下查询仅返回已下订单的区域的“区域名称”。

   SELECT r.RegionName,
          COUNT (DISTINCT o.uid)
     FROM Orders AS o
LEFT JOIN Customers AS c ON o.CustomerID = c.uid
LEFT JOIN Regions AS r ON c.Region = r.uid
    WHERE (r.RegionName NOT LIKE 'NULL') 
      AND (r.RegionName <> '') 
      AND (r.RegionName NOT LIKE 'Region 1') 
      AND (o.DateOrdered LIKE '7%2011%')
 GROUP BY r.RegionName
 ORDER BY r.RegionName

如何修改它,以便即使“ COUNT”为“ 0”时也显示所有区域名称?


问题答案:

您需要将JOINRegions更改为RegionsRIGHT JOIN或将Regions作为FROM表,然后JOIN从此处更改为其他表。

我喜欢第二种方法,因为它对我来说似乎更直观。您在这里关心地区,并试图获取有关地区的信息,因此应该在FROM(IMO)中:

SELECT
    R.RegionName,
    COUNT(O.uid)
FROM
    Regions R
LEFT OUTER JOIN Customers C ON C.Region = R.uid  -- I really don't like this naming convention
LEFT OUTER JOIN Orders O ON
    O.CustomerID = C.uid AND
    O.DateOrdered LIKE '7%2011%'  -- Is your date really stored as a string? Ugh!
WHERE
    R.RegionName <> 'NULL' AND   -- This is VERY bad...
    R.RegionName <> '' AND
    R.RegionName <> 'Region 1'
GROUP BY
    R.RegionName
ORDER BY
    R.RegionName


 类似资料:
  • 问题内容: 我有两个表,一个是Employee,而邮寄Subscriptions Employee则如下所示: 名称(pk)| 姓| 年龄 邮件订阅 MailId(pk)| EmployeeName(fk)|描述| 日期 我想为每个客户订阅号,因此我尝试了以下查询: 它将为我提供邮件订阅中 具有 条目的每个员工的所有计数。 我的问题是我想查看所有员工的计数,包括没有条目的员工数(因此显示为0),我

  • 问题内容: 我在MySql Company中有两个表:(cname,city)工作:(ename,cname,salary) 我想显示每个公司的员工人数,即使该人数为零。 例如 输出应为: 但是以下查询和其他类似查询仅显示那些至少拥有一名员工的公司: 如果我使用外部联接,则员工数为零的公司仍将显示在一行中,因此该选项也将退出。 怎么做? 问题答案: LEFT JOIN的经典案例:

  • SQL Server 2008 SQL查询显示IP地址(如果存在) 输出 IP_ADDR1_TEXT是 列强制转换(IP_ADDR1<0则0xFFFFFFFFF+IP_ADDR1否则IP_ADDR1 END/256/256/256&0xFF为VARCHAR)+“.”+强制转换(IP_ADDR1<0则0xFFFFFFFF+IP_ADDR1否则IP_ADDR1结束/256/256和0xFF为VARCH

  • 我在做一个计算器应用程序,我用十进制格式来格式化我的数字。我的问题是我想让它显示像0,003这样的数字。但是逗号后面的2零直到我输入3才显示出来。请帮我修复这里的代码 添加“0”的代码

  • 问题内容: 我在数据库中有下表: 现在,如果我运行以下查询: 我得到以下输出: 输出显示的所有值,以及每行中返回的值。 现在,如果我运行以下查询: 我得到以下输出: 我的问题是,在第一个示例中输出第二个 Diane的 功能与功能之间有什么区别? __ 问题答案: 是一个聚合函数,通常与子句结合使用。 是输出当前日期的日期函数。 据我所知,只有MySQL允许使用此语法而不使用该子句。由于您没有提供,

  • 问题内容: 当我尝试在docker容器中运行Chrome时,出现以下错误:Gtk:无法打开显示::0 Dockerfile:(基于https://registry.hub.docker.com/u/jess/chromium/dockerfile) 构建并运行: 和错误: 问题答案: 我对铬不太了解,但是,当:-)我告诉X客户端连接到:0时,我的意思是连接到端口6000(或运行X服务器的任何设备)