原文:【Transact-SQL】计算整个表中所有值的出现的次数


一个表有3列,5行,那么一共有15个值,现在要计算整个表中所有值在表中出现的次数,不过这里表的列数是不确定的,上面的例子是3列,实际上也有可能是5列、20列,所以解决问题的步骤是这样的:

1、必须知道有多少列,然后构造动态语句,把这些列合并到一列中。

2、然后去重计算出所有的可能值。

3、最后计算每个值在表中出现了多少次。


  1. if(OBJECT_ID('dbo.wc') is not null)
  2. drop table dbo.wc
  3. go
  4. create table wc
  5. (
  6. a nvarchar(100),
  7. b nvarchar(100),
  8. c nvarchar(100)
  9. )
  10. insert into wc
  11. values('1','2','3'),
  12. ('a','f','d'),
  13. ('2','b','c'),
  14. (null,'c','w'),
  15. ('3','d',null)
  16. declare @temp table (cn nvarchar(100));
  17. declare @i int = 1;
  18. declare @v varchar(max)='';
  19. declare @column varchar(100)='';
  20. while @i <= (
  21. select count(*)
  22. from sys.tables t
  23. inner join sys.columns c
  24. on t.object_id =c.object_id
  25. where t.name = 'wc'
  26. )
  27. begin
  28. select @column = c.name
  29. from sys.tables t
  30. inner join sys.columns c
  31. on t.object_id =c.object_id
  32. where t.name = 'wc'
  33. and c.column_id = @i
  34. set @i = @i + 1
  35. set @v = @v + ' select '+ @column + ' from wc union all'
  36. end
  37. select @v = LEFT(@v,len(@v)-LEN('union all'))
  38. --select @v
  39. insert into @temp
  40. exec (@v)
  41. ;with a
  42. as
  43. (
  44. select cn
  45. from @temp
  46. where cn is not null
  47. group by cn
  48. )
  49. select a.cn,
  50. COUNT(t.cn)
  51. from a
  52. inner join @temp t
  53. on a.cn = t.cn
  54. group by a.cn
发布了416 篇原创文章 · 获赞 135 · 访问量 94万+

【Transact-SQL】计算整个表中所有值的出现的次数的更多相关文章

  1. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  2. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  3. **SQL某一表中重复某一字段重复记录查询与处理

    sql某一表中重复某一字段重复记录查询与处理   1.查询出重复记录  select 重复记录字段 form  数据表 group by houseno having count(重复记录字段)> ...

  4. 向SQL Server 现有表中添加新列并添加描述.

    注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先 ...

  5. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

  6. SQL语句 在一个表中插入新字段

    SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter ...

  7. oracle定时器,调用存储过程,定时从n张表中取值新增到本地一张表中

    --创建新增本地数据库的存储过程create or replaceprocedure pro_electric_record as  begin    insert into electric_met ...

  8. 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素

    /** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...

  9. oracle通过sql随机取表中的10条记录

    oracle通过sql随机取表中的10条记录: SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE Row ...

随机推荐

  1. python3.6+pycharm+robotframework 环境搭建

    参考文档:https://www.cnblogs.com/chenyuebai/p/8359577.html, https://www.cnblogs.com/jiyanjiao-702521/p/9 ...

  2. 一个hin秀的小学三年级奥数题 [hin秀]

    ~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题    [hin秀] 题目: 给出一个无限大的棋盘  n×n  (n>0 , 是 ...

  3. Mac下安装php-memcached扩展

    [libmemcached安装] libmemcached可以通过直接下载后解压也可以采用wget下载 先下载libmemcached:方式一:libmemcached下载地址:https://lau ...

  4. Angular 中的生命周期函数

    一. Angular中的生命周期函数 官方文档:https://www.angular.cn/guide/lifecycle-hooks 生命周期函数通俗的讲就是组件创建.组件更新.组件销毁的时候会触 ...

  5. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_07-Feign远程调用-Feign测试

    2.2.1 Feign介绍 Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端.Spring Cloud引入 Feign并且集成了Ribbon实 ...

  6. jenkins报错集合

    可能会碰到以下报错: 1)这里的失败原因是因为运行jenkins程序的是jenkins用户,我们连接节点的秘钥是root的,所以现在连接不上 打开配置文件/var/lib/jenkins 将jenki ...

  7. mysql导入、导出 ( 带视图)

    1创建账号授权 grant all privileges on jenkinsddbes.* to 'jenkinsddbes'@'%' identified by '1iN@Da12tA&* ...

  8. Infos - 通过搜索引擎获取信息与数据

    常用搜索引擎命令 site 用来查询网站收录量. 比如site:http://www.cnblogs.com/ inurl 查URL中包含的元素,比如inurl:bbs ,搜索出URL包含bbs的页面 ...

  9. 生成count位随机数工具类

    工具类 import java.util.Random; /** * 生成6位随机数字 */ public class GeneratorCode { /** * * @Title: getCode ...

  10. 《Fluid Engine Development》 学习笔记1-求解线性方程组

    我个人对基于物理的动画很感兴趣,最近在尝试阅读<Fluid Engine Development>,由于内容涉及太多的数学问题,而单纯学习数学又过于枯燥,难以坚持学习(我中途放弃好多次了) ...