Dynamic Cross-Tabs/Pivot Tables 通用统计报表列转行存储过程
2023-09-11 14:19:13 时间
---www.dusystem.com
---涂聚文use pubsGOCREATE PROCEDURE crosstab @select varchar(8000),@sumfunc varchar(100), @pivot varchar(100), @ta
---www.dusystem.com
---涂聚文
use pubs
GO
CREATE PROCEDURE crosstab
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC (SELECT + @pivot + AS pivot INTO ##pivot FROM + @table + WHERE 1=2)
EXEC (INSERT INTO ##pivot SELECT DISTINCT + @pivot + FROM + @table + WHERE
+ @pivot + Is Not Null)
SELECT @sql=, @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, END) )
SELECT @delim=CASE Sign( CharIndex(char, data_type)+CharIndex(date, data_type) )
WHEN 0 THEN ELSE END
FROM tempdb.information_schema.columns
WHERE table_name=##pivot AND column_name=pivot
SELECT @sql=@sql + + convert(varchar(100), pivot) + = +
stuff(@sumfunc,charindex( (, @sumfunc )+1, 0, CASE + @pivot + WHEN
+ @delim + convert(varchar(100), pivot) + @delim + THEN ) + , FROM ##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex( FROM , @select)+1, 0, , + @sql + )
EXEC (@select)
SET ANSI_WARNINGS ON
GO
---1 应用实例
EXECUTE crosstab select title from titles inner join sales on (sales.title_id=titles.title_id)
group by title, sum(qty),stor_id,stores
isnull(sum(qty),0)
---2子应用实例
use pubs
EXECUTE crosstab select pub_name, count(qty) as orders, sum(qty) as total
from sales inner join titles on (sales.title_id=titles.title_id)
right join publishers on (publishers.pub_id=titles.pub_id)
group by pub_name, sum(qty),type,titles
select pub_name, count(qty) as orders, isnull(sum(qty),0) as total
from sales inner join titles on (sales.title_id=titles.title_id)
right join publishers on (publishers.pub_id=titles.pub_id)
group by pub_name
---3 应用实例
use Northwind
EXECUTE crosstab SELECT LastName FROM Employees INNER JOIN Orders
ON (Employees.EmployeeID=Orders.EmployeeID)
GROUP BY LastName, count(lastname), Year(OrderDate), Orders
from: http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables
【笔记】开发指南—DQL语句—Grouping Sets、Rollup和Cube扩展 在关系型数据库中,通常需要使用多个SELECT + UNION语句来实现按照多组维度的结果分组,PolarDB-X新增支持通过Grouping Sets、Rollup和Cube扩展来实现这一目的。此外,PolarDB-X还支持在SELECT命令或HAVING子句中使用GROUPING函数和GROUPING_ID函数,来帮助解释使用上述扩展时的结果。本文将介绍相关语法和示例。
开发指南—DQL语句—Grouping Sets、Rollup和Cube扩展 在关系型数据库中,通常需要使用多个SELECT + UNION语句来实现按照多组维度的结果分组,PolarDB-X新增支持通过Grouping Sets、Rollup和Cube扩展来实现这一目的。此外,PolarDB-X还支持在SELECT命令或HAVING子句中使用GROUPING函数和GROUPING_ID函数,来帮助解释使用上述扩展时的结果。本文将介绍相关语法和示例。
(三、四)Superset 1.3图表篇——透视表-Pivot Table 透视表 Pivot Table对于经常做数据分析的同学再熟悉不过了。Superset也提供了透视表的功能,分为两个版本,在最新的版本中 Pivot Table已经不做更新,建议大家使用最新的 Pivot Table V2图表。
做图表统计你需要掌握SQL Server 行转列和列转行 原文:做图表统计你需要掌握SQL Server 行转列和列转行 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行。
原文网址:http://www.jb51.net/article/85113.htm 本文主要介绍Oracle中rank,over partition函数的用法,希望对大家有所帮助。
geovindu 读者是,读之者,者之读.一沙一世界! to be is to do举世皆清我独浊,众人皆醒我独醉.俺是农民工,程序员.
---www.dusystem.com
---涂聚文
use pubs
GO
CREATE PROCEDURE crosstab
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC (SELECT + @pivot + AS pivot INTO ##pivot FROM + @table + WHERE 1=2)
EXEC (INSERT INTO ##pivot SELECT DISTINCT + @pivot + FROM + @table + WHERE
+ @pivot + Is Not Null)
SELECT @sql=, @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, END) )
SELECT @delim=CASE Sign( CharIndex(char, data_type)+CharIndex(date, data_type) )
WHEN 0 THEN ELSE END
FROM tempdb.information_schema.columns
WHERE table_name=##pivot AND column_name=pivot
SELECT @sql=@sql + + convert(varchar(100), pivot) + = +
stuff(@sumfunc,charindex( (, @sumfunc )+1, 0, CASE + @pivot + WHEN
+ @delim + convert(varchar(100), pivot) + @delim + THEN ) + , FROM ##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex( FROM , @select)+1, 0, , + @sql + )
EXEC (@select)
SET ANSI_WARNINGS ON
GO
---1 应用实例
EXECUTE crosstab select title from titles inner join sales on (sales.title_id=titles.title_id)
group by title, sum(qty),stor_id,stores
isnull(sum(qty),0)
---2子应用实例
use pubs
EXECUTE crosstab select pub_name, count(qty) as orders, sum(qty) as total
from sales inner join titles on (sales.title_id=titles.title_id)
right join publishers on (publishers.pub_id=titles.pub_id)
group by pub_name, sum(qty),type,titles
select pub_name, count(qty) as orders, isnull(sum(qty),0) as total
from sales inner join titles on (sales.title_id=titles.title_id)
right join publishers on (publishers.pub_id=titles.pub_id)
group by pub_name
---3 应用实例
use Northwind
EXECUTE crosstab SELECT LastName FROM Employees INNER JOIN Orders
ON (Employees.EmployeeID=Orders.EmployeeID)
GROUP BY LastName, count(lastname), Year(OrderDate), Orders
from: http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables
【笔记】开发指南—DQL语句—Grouping Sets、Rollup和Cube扩展 在关系型数据库中,通常需要使用多个SELECT + UNION语句来实现按照多组维度的结果分组,PolarDB-X新增支持通过Grouping Sets、Rollup和Cube扩展来实现这一目的。此外,PolarDB-X还支持在SELECT命令或HAVING子句中使用GROUPING函数和GROUPING_ID函数,来帮助解释使用上述扩展时的结果。本文将介绍相关语法和示例。
开发指南—DQL语句—Grouping Sets、Rollup和Cube扩展 在关系型数据库中,通常需要使用多个SELECT + UNION语句来实现按照多组维度的结果分组,PolarDB-X新增支持通过Grouping Sets、Rollup和Cube扩展来实现这一目的。此外,PolarDB-X还支持在SELECT命令或HAVING子句中使用GROUPING函数和GROUPING_ID函数,来帮助解释使用上述扩展时的结果。本文将介绍相关语法和示例。
(三、四)Superset 1.3图表篇——透视表-Pivot Table 透视表 Pivot Table对于经常做数据分析的同学再熟悉不过了。Superset也提供了透视表的功能,分为两个版本,在最新的版本中 Pivot Table已经不做更新,建议大家使用最新的 Pivot Table V2图表。
做图表统计你需要掌握SQL Server 行转列和列转行 原文:做图表统计你需要掌握SQL Server 行转列和列转行 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行。
原文网址:http://www.jb51.net/article/85113.htm 本文主要介绍Oracle中rank,over partition函数的用法,希望对大家有所帮助。
geovindu 读者是,读之者,者之读.一沙一世界! to be is to do举世皆清我独浊,众人皆醒我独醉.俺是农民工,程序员.
相关文章
- R_Studio(学生成绩)对数值型数据进行统计量分析
- python数据结构之二叉树的统计与转换实例
- SPSS统计基础-均值功能的使用
- 数据分析-GDP统计
- Lucene5学习之Group分组统计
- 如何再window下统计自己写的代码行
- 阿里规范 - 五、MySQL 数据库 - (三)SQL语句 - 1 - 【强制】不要使用 count(列名)或 count(常量)来替代 count(*),count(*)是 SQL92 定义的 标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。
- 推荐一个好玩的鼠标和键盘使用情况统计软件,完全免费
- ZZNUOJ_C语言1066:字符分类统计(完整代码)
- Python语言学习之pandas:利用pandas库统计某一列col中各个值出现的次数(降序输出)并绘图可视化
- 李航老师《统计学习方法(第二版)》课件 & 算法代码全公开了!
- 1790. 仅执行一次字符串交换能否使两个字符串相等-统计字符不相同位置的数量
- 1254. 统计封闭岛屿的数目
- Leetcode 2255. 统计是给定字符串前缀的字符串数目
- 各种sensor名称统计
- 玩转华为ENSP模拟器系列 | 配置TWAMP Light统计业务示例
- 电商热门商品统计