我希望显示SQL数据库中表格中每个不同元素的出现次数,以及新输出表格中特定的不同元素。是否有可能在一次声明中手动撞击我的头?
答案 0 :(得分:1)
如果没有真正尝试过,那怎么样:
SELECT tmp.Field, (SELECT COUNT(*) FROM [Table] t WHERE t.DesiredField = tmp.Field) AS Count
FROM
(
SELECT DISTINCT DesiredField FROM [Table]
) tmp
首先从[表格]中选择所有不同的值,然后在外部选择中,选择它们在列中出现的值和次数。
您也可以尝试
SELECT Field, SUM(1) AS Count FROM Table
GROUP BY Field
这应该"压扁"该表使其仅包含Field
中的不同值以及Field
具有相同值的行数。
我刚试过第二次 - 看起来效果很好。
原来我一直都错了。第二个例子和下面的例子实际上返回了相同的结果:
SELECT Field, COUNT(*) AS Count FROM Table
GROUP BY Field
答案 1 :(得分:1)
最简单的方法就是使用COUNT()。您将看到计数参数的变化,因此这里有选项。
DECLARE @tbl TABLE(id INT, data INT)
INSERT INTO @tbl VALUES (1,1),(2,1),(3,2),(4,NULL)
SELECT data
,COUNT(*) Count_star
,COUNT(id) Count_id
,COUNT(data) Count_data
,COUNT(1) Count_literal
FROM @tbl
GROUP BY data
data Count_star Count_id Count_data Count_literal
----------- ----------- ----------- ----------- -------------
NULL 1 1 0 1
1 2 2 2 2
2 1 1 1 1
Warning: Null value is eliminated by an aggregate or other SET operation.
如果你COUNT一个包含NULL的字段,你会看到与NULL处理的区别。