sql 统计 行转列 动态-sql 多表联合统计问题

问题描述

sql 多表联合统计问题
三张表,用户表
用户:
ID Uname
1 张三
2 李四
3 王五
. .
. .
. .

档案分类1:
ID Title UserID
1 XXX 2
2 aaa 2
3 bbb 1
4 ccc 3
. . .
. . .
. . .
档案分类2:
ID FileNo UserID
1 XXX 2
2 aaa 2
3 bbb 1
4 ccc 3
. . .
. . .
. . .
档案表和用户表通过UserID 关联,怎样统计出下面的效果:
分类名称 总数 张三 李四 王五 ……
档案1 19 2 3 0
档案2 1 3 0 6
因为档案可能有多重分类,但都可以用UserID和用户表关联,所以最好用动态sql

解决方案

SQL 多表联合

解决方案二:
http://blog.chinaunix.net/uid-25887681-id-599764.html

时间: 2025-01-30 05:05:40

sql 统计 行转列 动态-sql 多表联合统计问题的相关文章

SQL Server 行转列和列转行实例讲解

1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例 WITH TAS(    SELECT 1 as TeamId,'测试团队1' as Team,80 'MEN',20 'WOMEN'    UNION    

数据库行转列的sql语句(zt)

转载:http://www.cnblogs.com/Charles2008/archive/2008/03/04/1090162.html 问题描述 假设有张学生成绩表(CJ)如下 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 现在 想写 sql 语句     查询后结果 为    姓名 语文 数学 物理 张三 80 90 85 李四 85 92 82       该怎么实现 ? 研究意义   

table 行转列的sql详解_MsSql

一.要求 1 创建数据表 CREATE TABLE [dbo].[StuScore]( [stuid] [int] NOT NULL, [subject] [nvarchar](30) NULL, [score] [decimal](5, 1) NULL ) 2 插入测试数据 stuid subject score 3 chinese 76.0 3 math 73.0 4 chinese 82.0 5 chinese 66.0 5 math 93.0 6 chinese 67.0 7 math

table 行转列的sql详解

一.要求 1 创建数据表 CREATE TABLE [dbo].[StuScore]( [stuid] [int] NOT NULL, [subject] [nvarchar](30) NULL, [score] [decimal](5, 1) NULL ) 2 插入测试数据 stuid subject score 3 chinese 76.0 3 math 73.0 4 chinese 82.0 5 chinese 66.0 5 math 93.0 6 chinese 67.0 7 math

sql server-sqlserver行转列问题,请大神帮忙看看

问题描述 sqlserver行转列问题,请大神帮忙看看 如何将下图数据进行行转列 名称 数据 时间 csrq 89 2006 csrq 90 2007 dhhm 90 2006 dhhm 91 2007 sjhm 92 2006 sjhm 93 2007 转换为 时间 csrq dhhm sjhm 2006 89 90 92 2007 90 91 93 谢谢! 解决方案 http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html

SQL Server-聚焦深入理解动态SQL查询(三十二)

前言 之前有园友一直关注着我快点出SQL Server性能优化系列,博主我也对性能优化系列也有点小期待,本来打算利用周末写死锁以及避免死锁系列的接着进入SQL Server优化系列,但是在工作中长时间都是利用EF来操作SQL,不免对写SQL语句有些生疏,在某些场景下还是只能利用底层的SQL语句或者写存储过程来实现,很久没写存储过程都忘记怎么写了,所以本节穿插动态SQL查询的文章,别着急,博主说过不会烂尾,博主再忙也会抽空将整个SQL Server系列梳理完毕,那样的话,无论对初级还是中级者都可以

SQL SERVER 中构建执行动态SQL语句的方法

1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fname varchar(20) set @fname = 'FiledName' --Select @fname from tableName

sql server行转列的一种实现方法

对于有些业务来说,数据在表中的存储和其最终的表现恰好相当于把源表倒转,那么这个时候我们就碰到了如何把行转化为列的问题,为了简化问题,我们且看如下查询出来的数据,您不必关心表的设计以及sql语句: 源表如下:(表名为info)        ------------------------------------------------------------------------ select username,    语文=(case course when '语文' then grade

SQL Server行转列的方法解析

话不多说,请看代码: /* SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列名称>, FROM (<生成数据的 SELECT 查询>) AS <源查询的别名> PIVOT ( <聚合函数>(<要聚合的列>) FOR [<包含要成为列标题的值的列>] IN ( [第一个透视的列], [第二个透视的列