我对我想要的SELECT查询感到困惑。基本上我的文件每张发票有一个或多个记录,显示其区域。我想知道每个地区有多少发票。
以下是我的表 Table1
的示例InvNo Region
A1 1
A2 3
A3 2
A4 1
A5 1
A6 2
运行以下SQL代码可以为我提供我想要的内容但是包含一个我不期望的额外记录 - 并且不想要,显然是空白区域。我不明白为什么会出现这一行。
SELECT Region, COUNT(DISTINCT Invno) as count
FROM table1
GROUP BY Region
这是输出
Region count
0 ' I do not want this row!
1 3
2 2
3 1
我应该重新编写代码吗?或者这可能是我正在使用的SQL平台(VistaDB)的问题?
更新如果我不调用我的新列count
而myCount
,则此代码正常工作,即COUNT(DISTINCT Invno) as myCount
。这提醒我,应该总是小心一个给变量等的名称。
答案 0 :(得分:2)
试试这个
SELECT Region, COUNT(DISTINCT Invno) as count
FROM table1
GROUP BY Region
HAVING COUNT(DISTINCT Invno) > 0
答案 1 :(得分:0)
您有一行region
和inv_no
都是NULL
(至少inv_no
是)。你可以过滤掉它:
SELECT Region, COUNT(DISTINCT Invno) as count
FROM table1
WHERE Invno is not null
GROUP BY Region;
答案 2 :(得分:0)
对我来说很好。
我用InvNo和null区域尝试了它,并且null InvNo,都是null,甚至是region = 0.计数永远不会返回零,所以我说它是vistadb的一个特性。但我在MySQL上测试过,而不是vistadb。