【Transact-SQL】计算整个表中所有值的出现的次数
原文:【Transact-SQL】计算整个表中所有值的出现的次数
一个表有3列,5行,那么一共有15个值,现在要计算整个表中所有值在表中出现的次数,不过这里表的列数是不确定的,上面的例子是3列,实际上也有可能是5列、20列,所以解决问题的步骤是这样的:
1、必须知道有多少列,然后构造动态语句,把这些列合并到一列中。
2、然后去重计算出所有的可能值。
3、最后计算每个值在表中出现了多少次。
-
if(OBJECT_ID('dbo.wc') is not null)
-
drop table dbo.wc
-
go
-
-
-
create table wc
-
(
-
a nvarchar(100),
-
b nvarchar(100),
-
c nvarchar(100)
-
)
-
-
insert into wc
-
values('1','2','3'),
-
('a','f','d'),
-
('2','b','c'),
-
(null,'c','w'),
-
('3','d',null)
-
-
-
declare @temp table (cn nvarchar(100));
-
-
declare @i int = 1;
-
-
declare @v varchar(max)='';
-
-
declare @column varchar(100)='';
-
-
while @i <= (
-
select count(*)
-
from sys.tables t
-
inner join sys.columns c
-
on t.object_id =c.object_id
-
where t.name = 'wc'
-
)
-
begin
-
select @column = c.name
-
from sys.tables t
-
inner join sys.columns c
-
on t.object_id =c.object_id
-
where t.name = 'wc'
-
and c.column_id = @i
-
-
set @i = @i + 1
-
-
set @v = @v + ' select '+ @column + ' from wc union all'
-
-
end
-
-
select @v = LEFT(@v,len(@v)-LEN('union all'))
-
--select @v
-
-
insert into @temp
-
exec (@v)
-
-
;with a
-
as
-
(
-
select cn
-
from @temp
-
where cn is not null
-
group by cn
-
)
-
-
select a.cn,
-
COUNT(t.cn)
-
from a
-
inner join @temp t
-
on a.cn = t.cn
-
group by a.cn
【Transact-SQL】计算整个表中所有值的出现的次数的更多相关文章
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- **SQL某一表中重复某一字段重复记录查询与处理
sql某一表中重复某一字段重复记录查询与处理 1.查询出重复记录 select 重复记录字段 form 数据表 group by houseno having count(重复记录字段)> ...
- 向SQL Server 现有表中添加新列并添加描述.
注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先 ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- SQL语句 在一个表中插入新字段
SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter ...
- oracle定时器,调用存储过程,定时从n张表中取值新增到本地一张表中
--创建新增本地数据库的存储过程create or replaceprocedure pro_electric_record as begin insert into electric_met ...
- 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素
/** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...
- oracle通过sql随机取表中的10条记录
oracle通过sql随机取表中的10条记录: SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE Row ...
随机推荐
- linux物理内存与虚拟内存
http://www.360doc.com/content/14/0123/14/14450281_347336709.shtml 1.查看内存占用情况 $ free -m -h total used ...
- JMeter-因cookie管理器不兼容返回H5内容内容的解决
问题: 使用的post方法但是显示的是get,并且返回页面H5的内容 解决: jmeter版本太低了,需要选择cookie管理期选择兼容模式(一般默认的为standard)
- es6语法中的arrow function=>
(x) => x + 相当于 function(x){ ; }; var ids = this.sels.map(item => item.id).join() var ids = thi ...
- leetcode 55. Jump Game、45. Jump Game II(贪心)
55. Jump Game 第一种方法: 只要找到一个方式可以到达,那当前位置就是可以到达的,所以可以break class Solution { public: bool canJump(vecto ...
- dapper 异步修改方法
public async Task<int> UpdateStatusByWarehouseId(bool isValid, int warehouseId) { using (var c ...
- QML小例子【QML工程里信号与槽】
1.效果 代码参考B站视频:https://www.bilibili.com/video/av36584062 功能:点击左边,会发出信号,右边会有个颜色动画,然后计数+1 2.分析: 一共有两个对象 ...
- PAT 甲级 1042 Shuffling Machine (20 分)(简单题)
1042 Shuffling Machine (20 分) Shuffling is a procedure used to randomize a deck of playing cards. ...
- @Qualifier is not applicable for constructor
问题场景: 笔者在springboot项目中使用java_websocket作为客户端,调用第三方ws服务. 最初只调用一个ws服务,以下代码可以正常工作: @Bean public URI ttsU ...
- Delphi ADOQuery的速度优化
今天终于把纠缠了几天的问题改完了,说到底只是一个很小的问题,就是ADOQuery的一个小属性. 把控件DBGridEh的一列的checkbox设为true,将其绑定DataSource和ADOQuer ...
- Node中使用MySQL报错:TypeError: Cannot read property 'query' of undefined
Node中使用MySQL报错: TypeError: Cannot read property 'query' of undefined at /Users/sipeng/Desktop/彭思/201 ...