创建VIEW(在列中计算重复值)

时间:2016-01-07 16:31:29

标签: sql sql-server sql-server-2008 view

我对SQL数据库的项目很少,其中包含一些列的表。

问题:如何在SQL Server中创建视图,该视图计算我在列中有多少重复值并在下一列中显示该数字。

下面你可以看到我想要的结果。

|id|name|count|
|1 |tom |     |
|2 |tom |     |
|3 |tom |     |
|  |    |  3  |
|4 |leo |     |
|  |    |  1  |

3 个答案:

答案 0 :(得分:2)

视图只是一个在CREATE VIEW AS之前带有SELECT字样的select语句。这允许例如1个人(DBA)维护(创建/改变)复杂视图,而另一个人(开发者)仅具有从中进行选择的权限。

所以要使用@ Stidgeon的回答(见下文):

CREATE VIEW MyCounts 
AS
SELECT name, COUNT(id) AS counts
FROM table
GROUP BY name

以后你可以查询

Select * from MyCounts where counts > 1 order by name

或者你需要做什么。请注意,SQL SERVER中的视图中不允许使用order by

答案 1 :(得分:1)

您似乎只想计算每个'名称的条目数,在这种情况下,您只需要进行简单的COUNT查询:

CREATE VIEW view_name AS
  SELECT name, COUNT(id) AS counts
  FROM table
  GROUP BY name

您的案例中的输出将是:

name    counts
--------------
Tom       3
Leo       1

答案 2 :(得分:1)

您可以使用grouping sets执行所需操作:

select id, name, count(*)
from t
group by grouping sets ((id, name), (name));

group by上的id, name是多余的;值应始终为" 1"。但是,这允许使用grouping sets,这是一种用来表达查询的便捷方式。