zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Dynamic Cross-Tabs/Pivot Tables 通用统计报表列转行存储过程

统计存储 过程 通用 报表 转行 Dynamic 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举世皆清我独浊,众人皆醒我独醉.俺是农民工,程序员.