建立Microsoft SQL Server 2005数据仓库
这几天用了一下Microsoft SQL Server 200的分析服务,贴出来给大家分享一下。
请多多指正。谢谢。
一、需求:
建立一个图书订单统计系统
1、统计各个图书馆订单数量。
2、统计各个图书馆订单的各个状态的数量占该图书馆的订单数量的百分比。
3、同时统计原始数量和储运数量
二、数据表
主要的字段
订单ID
单位号(图书馆编号)
单位(图书馆名称)
原始数量
储运数量
最新状态(该订单当前状态)
三、实现:
1、打开Visual Studio 2005 新建项目,选择Analysis Services项目,
选择数据源文件夹,新建数据源:
新建数据源向导启动:
点击上图新建出现连接配置对话框
配置方法和链接数据库的配置方法相同。
配置连接数据源的帐号,以后就是一路下一步:)
选择数据源视图文件夹,新建一个数据源视图
选择含有统计数据的表,以后就是一路下一步:)
选择多维数据集文件夹,新建多维数据集也就是一个Cube
设置事实表和维度表
选择度量值,也就是如果是SQL就是需要count,sum等要统计的数据
取消所有选项,然后选择维度也就是SQL里面GROUP by的字段(这里我选择了“最新状态”和“单位”)
选择如上,这个不是最终结果,后面还要手工编辑。,以后就是一路下一步:)
通过浏览打开编辑维度。
建立一个层次结构,单位在上,状态在下。
把“图书分销 订单 计数”重名名为“订单数量”
修改后如上图
切换到浏览器,拖放单位到行位置。
再拖放最新状态到行,最终效果如下。
拖放显示的数据,也就是明细
拖放完毕效果
设置显示为百分比
最终效果
打开Microsoft SQL Server 2005 的SQL Server Management Studio连接到分析服务
新建查询,查询结果如图
查询语句如下:
with
set [AllCount] as '[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].Children'
Member [图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].[合计] as 'aggregate([AllCount])'
Member [所占订单数百分比] as '[订单数量]/([订单数量],[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].[合计])',format_string='#.00%'
select {[Measures].[订单数量],[Measures].[储运数量],[Measures].[原始数量],[所占订单数百分比]} on
相关文档:
1,SqlServer存储过程的事务处理
一种比较通用的出错处理的模式大概如下:
Create procdure prInsertProducts
(
@intProductId int,
@chvProductName varchar(30),
@intProductCount int
)
AS
Declare @intErrorCode int
Select @intErrorCode=@@Error
Begin transaction
if @intError ......
1. 说明:复制表(只复制结构,源表名:a,新表名:b)
SQL: select * into b from a where 1<>1;
2. 说明:拷贝表(拷贝数据,源表名:a,目标表名:b)
SQL: insert into b(a, b, c) select d, e, f from b;
3. 说明: ......
2000发布与订阅
预备工作
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户(SynUser)
2.在发布服务器上,新建一个共享目录 ......
C# SQL数据库操作通用类
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace Framework.DataBase
{
///
/// 通用数据库类
///
public class DataBase
{
private string ConnStr = null;
public DataBase()
{
&nb ......
外连接取数据如果为空,不存在AS时可能取到数据,但加了AS就会报错。比如Select Top 10 a.*,b.Class AS ClassId
,b.DeviceName from AuxBusInfo a Left Join DeviceCandidate b On a.InitialDeviceRscId = b.DeviceRscId Order By AuxBusId,当 ......