sql - 显示非结果行 SQL (groupby - count)

标签 sql sql-server

我在查询 (MS SQL Server) 时遇到问题,我想知道是否可以执行以下操作以及如何正确执行。

这是查询:

select numTenants, count(codSite) numSites
from (select case count(st1.name) when 0 then '0T'
                       when 1 then '1T' 
                       when 2 then '2T' 
                       when 3 then '3T'
                       when 4 then '4T'
                       else 'More than 4T' end numTenants, os1.siteCode as codSite
    from fl_OperativeSite os1 left join fl_SiteTenant st1
        on st1.fkOperativeSite=os1.pkOperativeSite
    where  os1.siteType='A' and os1.externalInfrastructure=2
    group by os1.siteCode) groups
group by numTenants
order by numTenants

这是结果:

numTenants     numSites
   1T             2957
   2T              553
   3T             1503
   4T              423
More than 4T       131

因为显然没有 numTenants 为 0 的“站点”。

我想问的是:有没有办法让结果显示如下?

numTenants     numSites
   0T                0
   1T             2957
   2T              553
   3T             1503
   4T              423
More than 4T       131

非常感谢!

最佳答案

这很简单:选择所有“数字”并外部连接您的查询:

select numbers.str, results.numSites
from 
(
    select '0T' as str union all
    select '1T' union all
    select '2T' union all
    select '3T' union all
    select '4T' union all
    select 'More than 4T'
) numbers
left join
(
  select numTenants, count(codSite) numSites
  from 
  (
    select 
      case count(st1.name) 
        when 0 then '0T'
        when 1 then '1T' 
        when 2 then '2T' 
        when 3 then '3T'
        when 4 then '4T'
        else 'More than 4T' 
      end numTenants,
      os1.siteCode as codSite
    from fl_OperativeSite os1 
    left join fl_SiteTenant st1
           on st1.fkOperativeSite=os1.pkOperativeSite
    where os1.siteType='A' and os1.externalInfrastructure=2
    group by os1.siteCode) groups
  group by numTenants
) results on results.numTenants = numbers.str
order by numbers.str;

关于sql - 显示非结果行 SQL (groupby - count),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37022119/

相关文章:

sql - 如何同时搜索复数和单数

sql - PostgreSQL 9.5 在多次出现的键上插入数据

sql - 在 LIKE 语句中对多个值进行序列化

c# - C# 中的多个 SQL 查询将变量作为列返回

asp.net - 在不同的数据库架构上创建 ASP.NET 用户和角色表

sql-server - 在 Linux 中配置 ODBC 驱动程序

sql - 跟踪表中的层次结构

Java + Oracle ORA-1000 超出最大打开游标数

javascript - Node Express 应用程序调用 mssql 表示连接已关闭

sql:如何删除重复行(内容相同,但顺序不同)