协助LEFT JOIN。

时间:2017-12-06 22:22:53

标签: sql-server select ssms case-when

当count = 0时,尝试获取空值。以下是我用来计算符合特定条件的网站数量的代码。在这种情况下,代码以11或21开头。有一个类似构造的问题,但似乎我的性质更简单。

 SELECT
 [Area],
 COUNT(*) AS [Number of Sites]
 FROM
 dbo.sizeclassreport
 Where area='000005' and (code like '11%' or code like '21%')
 GROUP BY
 [area]
 UNION ALL

因此,从响应中,似乎我需要构建一个额外的表(如另一个问题所示的计数表),列出区域然后进行左连接。以下是我对此的第一次尝试。

 Create TABLE areas
 (
 Area char(6), NOT NULL
 CONSTRAINT PK_AREAS PRIMARY KEY (areas)

 Select * from areas
 LEFT JOIN dbo.sizeclassreport ON areas.areas = area.sizeclassreport
 COUNT(*) AS [Number of Sites]
 FROM
 dbo.sizeclassreport
 Where area='000005' and (code like '11%' or code like '21%')
 GROUP BY
 [area]
 UNION ALL

1 个答案:

答案 0 :(得分:1)

如果没有数据,则不会有一行显示零。您可以强制存在一行但是如果数据存在则会显示,如果不是,则通过coalesce()函数得到零。

SELECT
       '000005' as area
     , COALESCE((SELECT COUNT(*) FROM dbo.sizeclassreport 
           WHERE area = '000005' AND code LIKE '11%' OR code LIKE '21%'), 0)
相关问题