我需要能够统计Access 2010表的所有列中的所有NULLS。我的具体意思是,30列(字段)中有大量记录包含部分数据。如何计算Access 2010表中所有列中的所有NULL值?
我想统计整个表中有多少是空的。
我在这个网站上看到这篇文章标题为“如何计算表中的所有NULL值”,但是提到SQL,也是,我很遗憾承认对我来说太复杂了。
任何人有任何进一步的线索?
:)
我需要能够统计Access 2010表的所有列中的所有NULLS。我的具体意思是,30列(字段)中有大量记录包含部分数据。如何计算Access 2010表中所有列中的所有NULL值?
我想统计整个表中有多少是空的。
我在这个网站上看到这篇文章标题为“如何计算表中的所有NULL值”,但是提到SQL,也是,我很遗憾承认对我来说太复杂了。
任何人有任何进一步的线索?
:)
单个字段,你可以使用一个简单的查询。
SELECT Count(*) AS CountOfNulls
FROM MyTable
WHERE some_field Is Null;
如果你想在单个查询多个字段分别统计空值,你可以做这样的事情:
SELECT
Sum(IIf(some_field Is Null, 1, 0)) AS NullsIn_some_field,
Sum(IIf(another_field Is Null, 1, 0)) AS NullsIn_another_field
FROM MyTable;
如果你想有一个总计所有空值的,而不是每列计数,您可以使用先前的查询作为子查询并将各个列计数相加。
SELECT base.NullsIn_some_field + base.NullsIn_another_field AS total_nulls
FROM
(
SELECT
Sum(IIf(some_field Is Null, 1, 0)) AS NullsIn_some_field,
Sum(IIf(another_field Is Null, 1, 0)) AS NullsIn_another_field
FROM MyTable
) AS base;
OTOH,如果你希望避免SQL完全,或者干脆寻找那些语句太复杂,你不需要使用SQL。您可以在VBA过程中使用DCount()
函数。
下方运行在一个表的数据库名称立即窗口的过程:
HowManyNulls "YourTable"
你可以去与CTRL + 克键盘快捷键立即窗口。
Public Sub HowManyNulls(ByVal pTable As String)
Dim db As DAO.Database
Dim fld As DAO.Field
Dim tdf As DAO.TableDef
Dim lngNulls As Long
Dim lngTotal As Long
Set db = CurrentDb
Set tdf = db.TableDefs(pTable)
For Each fld In tdf.Fields
'lngNulls = DCount("*", pTable, fld.Name & " Is Null")
' accommodate field names which need bracketing ...
lngNulls = DCount("*", pTable, "[" & fld.Name & "] Is Null")
lngTotal = lngTotal + lngNulls
Debug.Print fld.Name, lngNulls
Next fld
Debug.Print "Grand total", lngTotal
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
End Sub
如果这些建议都令人满意,请修改你的问题,帮助我们更好地了解您所需要的。
当您不知道列名时,没有简单的方法在表的“所有列”上执行这种计数。
如果您想这样做,您必须编写一个程序来读取数据库的“元数据”,从该数据中提取列和表的列表,为每列创建一个单独的SQL语句,然后执行语句并将找到的数字添加到找到的正在运行的NULL值中。
这听起来像是你可能考虑追求的东西吗?如果是这样,你应该搜索获取MS Access数据库中表的列表并获取Access数据库中的表的列表的解决方案,然后将该信息与您已经从关于计数NULL的问题中获得的信息组合在一列中。
要在所有列的表计空值:
select count(*) from(select a from tt where a is null
union all
select b from tt where b is null
union all
select c from tt where c is null)
对不起,我不知道。因为我没有从你的帖子中得到任何线索。 –
所以你问的是...如果一行有2个空列,下一行有3个空列,会给你总共5个权利? –