一个用来统计相同姓名人数的SQl语句_MsSql

sql语句查询
表结构是这样:
ID 姓名 性别
1 张三 男
2 王四 男
3 丽丽 女
4 张三 男
5 赵柳 男
6 高洁 男
7 王四 女
8 高洁 女
9 张三 女
怎么能用一条SQL语句查询出如下的结果

姓名 人员个数 男人数 女人数 包含ID
张三 3 2 1 1,4,9
王四 2 1 1 2,7
丽丽 1 0 1 3
高洁 2 1 1 6,8
赵柳 1 1 0 5

复制代码 代码如下:

SELECT * FROM (SELECT DISTINCT Name,Count(ID) as 人員個數,
sum(case when Sex='男' then 1 else 0 end) as 男人數,
sum(case when Sex='女' then 1 else 0 end) as 女人數
FROM Test group by Name) A
OUTER APPLY(
SELECT
[包含ID]= STUFF(REPLACE(REPLACE(
(
SELECT ID FROM Test N
WHERE Name = A.Name
FOR XML AUTO
), '<N ID="', ','), '"/>', ''), 1, 1, '')
)N

时间: 2024-09-08 05:18:19

一个用来统计相同姓名人数的SQl语句_MsSql的相关文章

一个用来统计相同姓名人数的SQl语句

sql语句查询 表结构是这样: ID 姓名 性别 1 张三 男 2 王四 男 3 丽丽 女 4 张三 男 5 赵柳 男 6 高洁 男 7 王四 女 8 高洁 女 9 张三 女 怎么能用一条SQL语句查询出如下的结果 姓名 人员个数 男人数 女人数 包含ID 张三 3 2 1 1,4,9 王四 2 1 1 2,7 丽丽 1 0 1 3 高洁 2 1 1 6,8 赵柳 1 1 0 5 复制代码 代码如下: SELECT * FROM (SELECT DISTINCT Name,Count(ID) a

一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句

问题描述 一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句 用sql语句向ACCESS的一张表中添加数据,因为具体的列数还不清楚,所以想用循环一列一列向ACCESS表中插入数据,采用insert,为什么插入30行数据(即一列),当插第二列数据时就从第31行,第二列开始了(应该是第一行第二列开始).如果不用insert,用update那语句怎么写,一直出错. 解决方案 你的数据库表结构有问题.你应该把你的列作为行来插入.数据库中的表,列就应该是确定的. 解决方案二: 你

探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句_oracle

Oracle数据库查看一个进程是如何执行相关的实际SQL语句 复制代码 代码如下: SELECT b.sql_text, sid, serial#, osuser, machine      FROM v$session a, v$sqlarea b      WHERE a.sql_address = b.address;  查询前台发出的SQL语句. 复制代码 代码如下: select user_name,sql_text  from v$open_cursor  where sid in

SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句_MsSql

1.查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2.查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN d

一个过滤重复数据的 SQL 语句_MsSql

数据如下:     303 标准类别 TR_STANDARD_MANAGER     107 巡视记录类别 TR_PATROL_LOG     61 巡视记录类别 TR_PATROL_LOG     221 检修类型 TR_REPAIR_LOG     121 检修管理计划类别 TR_REPAIR_PLAN     141 检修管理计划类别 TR_REPAIR_PLAN     24 器材管理类别 TR_PATROL_PLAN_1     105 巡视计划类别 TR_PATROL_PLAN   

用asp.net做一个HR的管理系统,目前就卡在考情上面。请教一个SQL语句(在线等。马上结分)

问题描述 图2中的数据为打卡数据,有重复打卡的,和没打卡的.想插入到图1中.图一中只要一天4个打卡的时间,(注意是每天都会往表一中插入表二中新采集的数据哦)多余的不要.请教SQL语句.如果没打卡就为null或者是''谢谢各位大神!!!!!!! 解决方案 解决方案二:要么用存储过程,要么用程序代码实现,一句话的SQL基本无法实现.解决方案三:应该是这样的,表2中的数据应当先根据日期时间进行处理.按照你说的,一天有4个时间段:8:00-9:0012:00-13:0013:45-14:0017:50-

委托(一个主窗体统计多个从窗体的按钮单击的次数)

最近在学习金老师的<.NET2.0面向对象编程揭秘>,学到了13章,委托.事件驱动和异步调用.书上有个试一试,要求:利用委托,达到一个主窗体统计多个从窗体的按钮单击的次数. 效果如下: frmMain Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 using System; using System.Collections.Gener

统计一个建筑物的地上层高,起始层,每层户数,地下层数,地下每层户数的 sql语句

问题描述 统计一个建筑物的地上层高,起始层,每层户数,地下层数,地下每层户数的 sql语句 解决方案 表示无语,各种加密数据,缩写字段,鬼才看的懂 解决方案二: 用树查询根据dzysID和sjdzysid进行数据的树形展示,第一级子节点是层,第二级是户数,总数自己加吧,看dzyshx 正的是地上,负的是地下

printf-编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数

问题描述 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字符的个数 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字符的个 数,在主函数中输入字符串以及输出上述的结果.请填空完成上述功能的程序. #include #include void fltj(char str[],int a[]) { int ll,i; ll= (1) for (i=0;i<ll;i++) { if ( (2) ) a[0]++; else if ( (3) ) a[1]