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 … 立即下载

相关推荐

【UG/NX二次开发】记录在二次开发中遇到的坑

【UG/NX二次开发】记录在二次开发中遇到的坑

Trust_MJ的博客 2707

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

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

刘晓松的专栏 2178

Ubuntu服务器通过IPV6端口转发搭建幻兽帕鲁私服实战

本文详细介绍了在Ubuntu服务器上通过IPV6端口转发搭建幻兽帕鲁私服的完整教程。针对只有公网IPV6地址的服务器环境,提供了从硬件检查、端口转发工具配置到游戏服务器安装的全流程解决方案,帮助玩家轻松实现多人联机游戏体验。

weixin_30652491的博客 490

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

【5】GD32H7xx CAN发送及FIFO接收

GD32H7xx CAN收发调试记录,包含源码

madao1234的博客 1816

这20个网络工程项目经验,帮我跳槽加薪不止一次

嘿,大家好,我是圈圈,一个在网络工程圈子里混了十多年的老鸟。从国企的网管起步,到现在给大厂做顾问,我见过太多简历:有的光鲜亮丽,证书一堆,但一聊项目,就露怯;有的简历朴实,但列出的项目经验让人眼前一亮,直接拿offer。为什么?因为招聘官最看重实战。理论谁都会背,项目经验才是你的“硬通货”。尤其在网络工程这行,项目不光证明你的技能,还展示你解决问题的能力。今天,我就分享20个我亲身经历或见过的网络工程项目经验。每个都值得写进简历,不是吹牛,这些项目帮我跳槽加薪不止一次。

网络技术联盟站 432

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

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

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

使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤

本文详细介绍了如何在Visual Studio Code中通过ABAP Development Tools扩展连接ABAP On-Premise系统。关键步骤包括:通过Ctrl+Shift+P打开命令行面板选择「ABAP: New Destination...」创建RFC连接(仅支持SSO单点登录),选择本地SAPGUI中已有的系统,输入Client ID、语言和用户名(无需密码),最后将目标系统添加到工作区即可开始开发。文章强调了企业安全考虑下仅支持SSO的设计理念,并展示了连接配置的JSON格式示例。整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 987

Servlet业务逻辑封装的试探

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

天天磨刀 1060

[RK3568 Android11] 教程之原厂SDK源码适配AIO-3568J板子跑起来

目录 一、前提 二、修改dts设备树 三、适配板子的dts 四、编译系统烧入固件验证 一、前提 因源码是直接使用原厂的SDK,没有使用firefly配套的SDK源码,所以手上这块firefly aio-3568j板子在硬件设计上与原厂使用的板子会有些差异;就是因为这些差异会导致新固件烧入后,debug串口打印许多错误信息,可能的话,系统还会崩溃掉,跑不起来; 主要差异在哪里呢?比如: ● DDR类型和品牌多样性; ...

~未来可期~ 1744

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 905

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

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

朩冰雲的专栏 1006

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真 Proteus仿真 取模软件:pctolcd2002 程序代码 #include<reg52.h> unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行选 unsigned char code tabb[]={0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F};//选列"出" unsigned cha

perseverance51博客 8057

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

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

jlts17的专栏 1513

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

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

ztlyz84的专栏 1830

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

lsynb的专栏 2762

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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、付费专栏及课程。

余额充值