SQL server 2005 报表的一个例子

6、SQL Server 2005 分析与报表服务管理指南 本文详细介绍了 SQL Server 2005 中 Analysis Services 和报表服务(SSRS)的管理任务与最佳实践。内容涵盖 Analysis Services 的属性配置、存储模型管理、备份与还原、安全设置、性能监控,以及报表服务的核心组件、数据源配置和管理流程。通过提供实用步骤和建议,帮助数据库管理员高效管理和优化多维分析与报表系统,确保企业级数据分析的稳定性和安全性。 阅读详情

                                              SQL server 2005 报表的一个例子

订单主表orderMaster

订单编号

OrderNo

Char(12)

客户号

customerNo

Char(9)

业务员编号

SaleNo

Char(8)

订单金额

Ordersum

Numeric

订货日期

Orderdate

Datetime

出货日期

Shipdate

Datetime

发票号码

InvoiceNo

Char(10)

订单明细表orderDetail

订单编号

OrderNo

Char(12)

商品编号

ProductNo

Char(9)

销售数量

Qty

Int

成交单价

Price

Numeric

1)为了体现每一个销售类别对销售总额的贡献,需实现一个报表:将全部的销售额根据金额大小分类,分类区间为500元。类别为0-499.99,500-999.99 … 以此类推,格式如下:

范围下限

销售金额

所占比重(%)

0

2300.00

10

500.00

5200.00

23

1000.00

5600.00

34

…

…

…

2) 编写存储过程实现上述报表。

3)通过实验1所用高级程序语言调用上述存储过程,并在相应的数据控件显示报表结果。

4)现需增加新的报表内容,给出各种范围金额的排名。

范围下限

销售金额

所占比重(%)

排名

0

2300.00

10

3

500.00

5200.00

23

2

1000.00

5600.00

34

1

…

…

…

…

 

 -- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  <rorger>
-- Create date: <2010-11-8>
-- Description: <1)为了体现每一个销售类别对销售总额的贡献,需实现一个报表:将全部的销售额根据金额大小分类,
--分类区间为500元。类别为0-499.99,500-999.99 … 以此类推>
-- =============================================
CREATE PROCEDURE procOrderInfo
 -- Add the parameters for the stored procedure here
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
   
    --第一步,计算orderMaster中的orderSum字段
    UPDATE dbo.orderMaster
    SET dbo.orderMaster.Ordersum=temp.ordersum
    FROM dbo.orderMaster,
          (SELECT SUM(dbo.orderDetail.Price*dbo.orderDetail.Qty) 'ordersum',OrderNo
             FROM dbo.orderDetail GROUP BY OrderNo) AS temp
    WHERE dbo.orderMaster.OrderNo=temp.OrderNo

    -- Insert statements for procedure here
    --判断临时表是否存在,如果不存在则新建立,注意必须有tempdb.dbo.引导
 IF  (SELECT  OBJECT_ID('tempdb.dbo.#temp') ) IS NOT NULL
     DROP  TABLE #temp;
 CREATE TABLE #temp(region NUMERIC(18,2), --区域
  amount NUMERIC(18,2), --金额
   weighted INT -- 金额占总金额的百分比
   );
 
 
 DECLARE @step NUMERIC   --步值
 DECLARE @total NUMERIC(18,2) --总额
 DECLARE @numlines INT   --行数
 DECLARE @maxRegion NUMERIC    --最高金额
 
 SET @step=500 --设置步值
 SELECT @total= SUM(dbo.orderMaster.Ordersum) FROM dbo.orderMaster --计算总金额 @total
 SELECT @maxRegion=   MAX(dbo.orderMaster.Ordersum) FROM dbo.orderMaster
    SET @numlines=@maxRegion/@step --计算要显示的函数 @numlines=@maxRegion/@step
    IF (@maxRegion%@step !=0)    --如果@maxRegion/@step不能整除,那么numlines 增加 1
        SET @numlines  = @numlines + 1
   
   --下面将统计信息逐行插入到临时表
   DECLARE @i INT
   SET @i=0
   WHILE(@i <@numlines)
   BEGIN
    DECLARE @scope NUMERIC  -- @scope 表示划分范围,每行增加一个@step
    DECLARE @iamount NUMERIC --@scope范围内的总额
    DECLARE @weighted INT
    SET @scope=(@i+1) * @step      --比如:起始为0, @scope 为0-499.99
    SELECT @iamount= SUM(dbo.orderMaster.Ordersum)   FROM orderMaster
        WHERE  Ordersum<@scope AND Ordersum> @i*@step  --计算某个范围内的总金额
    SELECT @weighted=@iamount * 100 /@total; --计算所占的比重
    
 INSERT INTO #temp
         ( region, amount, weighted )
 VALUES  ( @i * @step, -- region - numeric
           @iamount, -- amount - numeric
           @weighted  -- weighted - int
           )
  SET @i = @i +1 
   END --while end
 
 SELECT * FROM #temp
END
GO

 

 

 

 

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  <rorger>
-- Create date: <2010-11-8>
-- Description: <1)为了体现每一个销售类别对销售总额的贡献,需实现一个报表:将全部的销售额根据金额大小分类,
--分类区间为500元。类别为0-499.99,500-999.99 … 以此类推现需增加新的报表内容,给出各种范围金额的排名。>
-- =============================================
CREATE PROCEDURE procOrderInfo
 -- Add the parameters for the stored procedure here
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
   
    --第一步,计算orderMaster中的orderSum字段
    UPDATE dbo.orderMaster
    SET dbo.orderMaster.Ordersum=temp.ordersum
    FROM dbo.orderMaster,
          (SELECT SUM(dbo.orderDetail.Price*dbo.orderDetail.Qty) 'ordersum',OrderNo
             FROM dbo.orderDetail GROUP BY OrderNo) AS temp
    WHERE dbo.orderMaster.OrderNo=temp.OrderNo

    -- Insert statements for procedure here
    --判断临时表是否存在,如果不存在则新建立,注意必须有tempdb.dbo.引导
 IF  (SELECT  OBJECT_ID('tempdb.dbo.#temp') ) IS NOT NULL
     DROP  TABLE #temp;
 CREATE TABLE #temp(region NUMERIC(18,2), --区域
  amount NUMERIC(18,2), --金额
   weighted INT -- 金额占总金额的百分比
   );
 
 
 DECLARE @step NUMERIC   --步值
 DECLARE @total NUMERIC(18,2) --总额
 DECLARE @numlines INT   --行数
 DECLARE @maxRegion NUMERIC    --最高金额
 
 SET @step=500 --设置步值
 SELECT @total= SUM(dbo.orderMaster.Ordersum) FROM dbo.orderMaster --计算总金额 @total
 SELECT @maxRegion=   MAX(dbo.orderMaster.Ordersum) FROM dbo.orderMaster
    SET @numlines=@maxRegion/@step --计算要显示的函数 @numlines=@maxRegion/@step
    IF (@maxRegion%@step !=0)    --如果@maxRegion/@step不能整除,那么numlines 增加 1
        SET @numlines  = @numlines + 1
   
   --下面将统计信息逐行插入到临时表
   DECLARE @i INT
   SET @i=0
   WHILE(@i <@numlines)
   BEGIN
    DECLARE @scope NUMERIC  -- @scope 表示划分范围,每行增加一个@step
    DECLARE @iamount NUMERIC --@scope范围内的总额
    DECLARE @weighted INT
    SET @scope=(@i+1) * @step      --比如:起始为0, @scope 为0-499.99
    SELECT @iamount= SUM(dbo.orderMaster.Ordersum)   FROM orderMaster
        WHERE  Ordersum<@scope AND Ordersum> @i*@step  --计算某个范围内的总金额
    SELECT @weighted=@iamount * 100 /@total; --计算所占的比重
    
 INSERT INTO #temp
         ( region, amount, weighted )
 VALUES  ( @i * @step, -- region - numeric
           @iamount, -- amount - numeric
           @weighted  -- weighted - int
           )
  SET @i = @i +1 
   END --while end
 ;
WITH tablerow AS(
SELECT ROW_NUMBER() OVER(ORDER BY #temp.amount DESC )  AS 'row' ,* FROM #temp)
SELECT #temp.region,#temp.amount,#temp.weighted,tablerow.row 
         FROM #temp,tablerow WHERE #temp.amount=tablerow.amount
 
 
END
GO

 

看看结果:

 

region                                  amount                                  weighted    row
--------------------------------------- --------------------------------------- ----------- --------------------
0.00                                    860.00                                  28          2
500.00                                  760.00                                  25          3
1000.00                                 1420.00                                 46          1

业务逻辑的存储过程封装方法 为了体现每一个销售类别对销售总额的贡献,需实现一个报表:将全部的销售额根据金额大小分类,分类区间为500元。类别为0-499.99,500-999.99 … 立即下载

相关推荐

夸克缓存视频合并小工具

原理 使用windows的命令行的copy命令来合并 copy /b 0+1+2+3 new.ts 分析缓存目录结构,发现都是一个m3u8文件带一个同名文件夹 所以分析m3u8并把原来的路径换成这个缓存文件夹路径并按顺序合并即可。 其中碰到的难点是Qprocess在windows不好使,索性直接存成.bat批处理文件再执行 还有就是中文问题,具体在代码里都说了。 代码 (环境Qt5.7.0) 这是mainwindow.h #ifndef MAINWINDOW_H #defin.

natural_Caduceus 1万+

从存储过程中读取参数设置

先写一个简单的存储过程,实现添加一个用户的功能:-- 添加新用户CREATE PROCEDURE dbo.usp_User_Insert    @username varchar(16) ,    -- 用户名    @pwd varchar(16) ,        -- 密码    @email varchar(50),        -- EmailAS -- 添加到用户表INSER

刘晓松的专栏 2178

QDMA工程搭建/windows驱动编译与性能测试

请注意,根据您的目标操作系统,您可能需要在windows启动配置中启用测试签名的驱动程序,以便启用此驱动程序的安装。右键单击设备,选择更新驱动程序软件,然后选择构建的QDMA驱动程序的文件夹(通常为。创建一个新工程,在IP Catalog中搜索QDMA,双击创建qdma ip核。驱动程序安装安装驱动程序最简单的方法是通过Windows的“设备管理器”。如果系统提示未经验证的驱动程序发布者,请选择无论如何安装此驱动程序软件。本节主要介绍QDMA驱动在Windows系统的源文件、编译和安装过程。

qq_28455081的博客 2287

Sql Server统计报表案例

场景:查询人员指定年月工作量信息 USE [Test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[GetWorkLoadMain] @year int, @month int, @UserId varchar(50) as begin declare ...

weixin_30245867的博客 380

RK3588开发板实战:从零开始移植Ubuntu 24.04(讯为SDK版)

本文详细介绍了如何在RK3588开发板上从零开始移植Ubuntu 24.04系统(讯为SDK版),涵盖开发环境准备、SDK解析、根文件系统定制、驱动适配、系统集成与烧录等全流程。通过实战案例,帮助开发者快速掌握RK3588开发板的系统移植技巧,适用于嵌入式开发与定制化Linux系统构建。

sand8的博客 437

PX4飞控参数详解-Multicopter Position Control​多旋翼位置控制

Maximum horizontal velocity for which position hold is enabled (use 0 to disable check)//启用悬停时的最大水平速度(使用 0 可禁用此检查)(仅适用MPC_POS_MODE 0 或 MPC_ALT_MODE 2)Maximum horizontal and vertical jerk in Position/Altitude mode//位置/高度模式下的最大水平和垂直加加速度。

u013096791的博客 1817

ReportingServies——SQLServer报表开发综合实例

上一篇:ReportingServies报表开发实例教程 如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中就是使用的sqlserver2012。 使用此工具进行报表开发,将会十分快速而且方便。这里我通过一个综合实例来演示它的使用技

邹玉杰(邹琼俊)的专栏 3万+

微信小程序数据采集实战:抓包+接口分析+动态数据全流程

微信小程序爬虫虽然比普通网页爬虫复杂,但只要掌握了正确的方法,其实并没有想象中那么难。核心思路就是:先绕过证书校验抓包,然后反编译小程序找到加密逻辑,最后用Python模拟相同的加密和解密过程。需要特别提醒的是,本文仅供技术研究使用。请遵守《网络安全法》和相关法律法规,不要爬取他人的敏感数据,不要将爬虫技术用于非法用途。尊重他人的知识产权和数据安全,才能让技术发挥真正的价值。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1093

Servlet业务逻辑封装的试探

最近使用MVC的理念架构了一个简单的新闻系统,按照理念意志,自然是使用Servlet处理业务逻辑,当我将函数封装在3个层次以内时,发现新闻系统的速度的确有所提高可是封装到3个层次以上时,发现程序执行的速度反而变慢了!看来并不是封装度越高越好!在一定程度上对程序进行封装即能提高程序执行效率,又能使程序更具有条理性 可是当封装的程度上升时会适得其反!

天天磨刀 1060

insightface scrfd人脸检测测试

pip install mmdet 自动安装mmcv win10上可以,服务器上没成功

jacke121的专栏 4022

如何正确的计算两个角度的角度差?

这一步是必要的,因为它确保了无论a相对于b是在逆时针方向还是顺时针方向,d2总是正确地反映出绕圆相反方向的角度差。这样,当函数进行最后的比较时,它能够准确地比较两个方向的旋转路径并选择最短的一个。

小秋 AI SLAM 入门实战教程 4137

Sql Server 2000 行转列 的实现(横排)

【转载】   在一些统计报表中,常常会用到将行结果用列形式展现。我们这里用一个常见的学生各门课程的成绩报表,来实际展示实现方法。我们用到的表结构如下:三张表的关系为:现有的测试数据为:我们需要的结果是:DECLARE @strSQL VARCHAR(8000)SET @strSQL = select t.STUNAME

朩冰雲的专栏 1006

Python之achatbot包语法、参数和实际应用案例

本书是一本PyTorch深度学习实战指南,分为基础(前6章)和进阶(后5章)两大部分。基础部分涵盖张量运算、神经网络、数据预处理及CNN等核心内容;进阶部分则深入图像、文本、音频建模技术,重点解析Transformer架构及大语言模型开发。全书采用"理论+实践"模式,适合从零基础到进阶的PyTorch学习者。

王国平的博客 632

SQL Server 2005报表设计:最佳实践和指导

SQL Server 2005报表设计:最佳实践和指导Microsoft? SQL Server? 报表服务是一种完整的报表工具。在使用报表服务中,你可以设计和发布多种样式的报表,从简单表格到带有图形和互动式连接的线上自由表单。报表服务可以将报表渲染成用户指定的多种格式,包括HTML、PDF、Excel和图像格式。 对于各种设置和选择对于报表製作者在选择报表布局是需要解决的问题。这篇文章提供了一些

jlts17的专栏 1513

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SQL Server 2005报表服务不能启动问题

  SQL Server 2005报表服务不能启动问题由于以前安装过SQL2005 BETA2版本,后来再装上SQL2005正式版后发现报表服务不能启动,使用url地址 [url]http://localhost/reportserver[/url]访问时报告下面信息: T

ztlyz84的专栏 1830

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

【IT168 技术文档】一位朋友提出个问题:集成到SQL Server 2005中的Reporting Services已经将报表模板发布到IIS服务器,客户端通过浏览器访问时,默认会弹出Windows集成身份验证的对话框。如果在IIS配置里面把允许匿名(IUSR_**)访问的选项勾选,客户端再次访问的时候,会提示IUSR_** 访问权限不足。    对于这个问题,除了要设置IIS允许匿名

lsynb的专栏 2762

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SQL SERVER 2005 分区表实际应用例子

SQL SERVER 2005 分区表实际应用例子    定义,原理网上讲得多了.在这就不费口舌,记录下创建过程.    一.  最基本,最重要的一步就是创建分区函数.创建分区函数首先要确定分区键--既按照哪字段来进行分区.在这个例子里,我用记录的时间来作为分区键,由于数据量的问题,最终决定每个月的数据放一个单独的分区.CREATE PARTITION FUNCTION FiveYearD

SimbaDan的专栏 5206

SQL Server 2005中的报表生成器

报表生成器客户端用户可以使用报表生成器客户端来创建和编辑报表。报表生成器用户界面是构建在大家熟知的微软office产品之上的,如Excel和PowerPoint。报表生成器是一种由浏览器来部署的ClickOnce应用程序。用户可以通过选择报表布局模板来开始创建报表,这些模板包含预定义的数据区,如:表格、矩阵表和图表。接着用户可以从模型中拖放报表项到设计界面,并可设置约束来过滤数据。报表生成器自动生

体验SQL Server 2005 3608

winXP,VS2005,SQL Server 2005 Express,SSMSEE

假期开始.net 2.0的学习,首先碰到的就是环境的配置。以前VS2003,但并没有怎么用。看到那个大东西,就怕了。所以有一个星期的时间基本是在用DW实践着.net 1.0,不知道Gates知道了,会不会有点郁闷。下面把VS2005和SQL Server 2005 Express的GUI式查看配置记录下来,以供自己日后参考:系统:Win XP1、先装好VS2005。我装的是 M

CapMIS 5478

已安装sql server 2005的电脑上安装Sql server 2008相关

在项目开发过程中安装一个Sql server 2005,但是需要用到sql server 2008 ,因此需要在电脑上在安装一个Sql server 2005,通过网上查阅相关资料,发现两者并存可行,安装中遇到一些问题,罗列如下:        安装的教程参考:          http://blog.csdn.net/Cexu2008/article/details/5498526

herb777的专栏 6242

SQL Server 2000 -SQL Server 2005升级手记

先说一下这次升级,我最大的体会:我觉得一个企业没有办法用一个系统,特别是当一个企业越做越大的时候,所以一个企业不可避免地就会有各种各样的系统,这些系统可以从业务上分为各种不同的系统,同时也可以在技术上分为数据层,中间层,展现层等,但是无论如何,系统间从架构上说一定要做到松耦合,这是架构师必须考虑的问题,否则后续麻烦很多。比如SQL Server 2005, 我之前一直是比较推崇的,微软随数据库服务

Think back, Move forward 2998

设计SQL 2005 Report报表

在VS2005中,选择 Report Server project模板新建工程BARreports1 设置工程属性:Target Server URL =  http://ctc-bar:81/ReportServer (开始以为是report manager的地址,设为http://ctc-bar:81/reports,结果总是提示连不上报表服务器,这里要用report server的地

闫炜的专栏 1360

sql server 2000 2005 交叉表查询

联机帮助上有现成的例子,先看看.如果看不懂,就再问吧. 交叉数据报表 有时候需要旋转结果以便在水平方向显示列,而在垂直方向显示行。这就是所谓的创建 PivotTable®、创建交叉数据报表或旋转数据。 假定有一个表 Pivot,其中每季度占一行。对 Pivot 的 SELECT 操作在垂直方向上列出这些季度: Year Quarter Amount ---- ------- ------ 1990 1 1.

zhuyaojun的专栏 1744

设置SQL SERVER 2005

一、SQL SERVER 2005 安全性设置: 首先我们要保证SQL SERVER 2005 能够安全的运行,再考虑一些SQL SERVER 2005 的其它服务。 1、修改默认SA密码 安装MSSQL时使用混合模式,当然SA密码最好不能为空,在SQL2005中,可以对SA这个超级用户名进行修改或删除。 修改方式: (1) 数据库查询工具: use master ALTER LOGIN [sa]

优快云 TERRYYRRET 的专栏 1329

SQL Server 2005平台的主要部分

♦  数据库引擎   SQL Server 2005数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内要求极高而且需要处理大量数据的应用需要。数据库引擎还在保持高可用性方面提供了有力的支持。♦  分析服务(Analysis Services)  分析服务为商业智能应用程序提供了联机分析处理(OLAP)和数据挖掘功能。分析服务允许用

Jessrey 1175

SQL Server 2005简介

 (一)        组件架构1.       SQL Server 2005特性n  开发效率n  企业数据管理n  商业智能安全的,可信赖的,高效率的业务线和分析应用数据库平台2.       组件架构(1)   核心结构n  数据库引擎:Database Enginen  分析服务:Analysis Servicen  报表服务:Report

daoyuly的专栏 1421
上一篇: SQL server 2005 判断表是否存在
下一篇: EasyPHP/phpmyadmin 尝试连接到 mysql 服务器 但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码 并确认这些信息与 mysql 服务器管理员所给出的信息一致。
rorger
博客等级 码龄16年 62粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值