T-SQL COUNT(*) 计算 NULLS 但我不想在行数中计算 NULLS
T-SQL COUNT(*) counts NULLS but I don't want to count NULLS in row count
我有一个场景,我试图不计算其中包含零、空白或 NULL 的行。但我不知道该怎么做。我已经使用 ISNULL 将其替换为空白,但结果显示为零。我不想要零,因为它弄乱了我的平均值等。下面的屏幕截图应该在底部显示 17 作为总数,但它显示 18 因为它将 null 计为行数。此空行在数据集中有一个 N/A 作为值,但我的计数将其计为一行。我正在使用 count(),因为我还有许多其他列,所以我无法更改 count()。关于如何将总数显示为 17 而不是 18 的任何想法?
谢谢
一些 SQL 实现(我认为这也是正确的 ANSI 标准,但不确定)对 COUNT(*)
VS COUNT(field)
.[=12 表现出不同的行为=]
前者将包括 NULL,后者将排除它们。
你可以像这样使用 SUM
SELECT SUM(CASE WHEN ISNULL(testeq4,'') <> '' THEN 1 ELSE 0 end)
FROM YourTable
试试这个:
SELECT SUM(CASE WHEN ISNULL(TestQ4,0)=0 THEN 0 ELSE 1 END)
我有一个场景,我试图不计算其中包含零、空白或 NULL 的行。但我不知道该怎么做。我已经使用 ISNULL 将其替换为空白,但结果显示为零。我不想要零,因为它弄乱了我的平均值等。下面的屏幕截图应该在底部显示 17 作为总数,但它显示 18 因为它将 null 计为行数。此空行在数据集中有一个 N/A 作为值,但我的计数将其计为一行。我正在使用 count(),因为我还有许多其他列,所以我无法更改 count()。关于如何将总数显示为 17 而不是 18 的任何想法?
谢谢
一些 SQL 实现(我认为这也是正确的 ANSI 标准,但不确定)对 COUNT(*)
VS COUNT(field)
.[=12 表现出不同的行为=]
前者将包括 NULL,后者将排除它们。
你可以像这样使用 SUM
SELECT SUM(CASE WHEN ISNULL(testeq4,'') <> '' THEN 1 ELSE 0 end)
FROM YourTable
试试这个:
SELECT SUM(CASE WHEN ISNULL(TestQ4,0)=0 THEN 0 ELSE 1 END)