当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
答案 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)