1

我对尝试进行的 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)的问题吗?

更新如果我不调用我的新列,则代码可以正常工作,countmyCount即可以正常工作COUNT(DISTINCT Invno) as myCount。这提醒我,应该始终小心给变量等的名称。

4

3 回答 3

2

尝试这个

SELECT Region, COUNT(DISTINCT Invno) as count
FROM table1
GROUP BY Region
HAVING COUNT(DISTINCT Invno) > 0
于 2014-05-28T15:59:01.220 回答
0

这对我来说可以。

我尝试使用 InvNo 和空区域以及空 InvNo,两者都为空,甚至区域 = 0。计数永远不会返回零,所以我会说这是 vistadb 的一个功能。但我在 MySQL 上测试过,而不是 vistadb。

于 2014-05-28T16:10:08.897 回答
0

你有一行 whereregioninv_noare both NULL(至少inv_no是)。您可以将其过滤掉:

SELECT Region, COUNT(DISTINCT Invno) as count
FROM table1
WHERE Invno is not null
GROUP BY Region;
于 2014-05-28T15:59:21.890 回答