一个生成时间维度表的存储过程
create PROCEDURE [dbo].[Create_time_by_day_dimension]
-- 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;
begin try
drop table [time_by_day_dimension]
end try
begin catch
end catch
CREATE TABLE [dbo].[time_by_day_dimension] (
[time_id] [int] IDENTITY (1, 1) NOT NULL ,
[the_date] [datetime] NULL ,
[the_day] [nvarchar] (15) NULL ,
[the_month] [nvarchar] (15) NULL ,
[the_year] [smallint] NULL ,
[day_of_month] [smallint] NULL ,
[week_of_year] [smallint] NULL ,
[month_of_year] [smallint] NULL ,
[quarter] [nvarchar] (2) NULL ,
[fiscal_period] [nvarchar] (20) NULL
) ON [PRIMARY]
DECLARE @WeekString varchar(12),
@dDate SMALLDATETIME,
@sMonth varchar(20),
@iYear smallint,
@iDayOfMonth smallint,
@iWeekOfYear smallint,
@iMonthOfYear smallint,
@sQuarter varchar(2),
@sSQL varchar(100),
@adddays int
SELECT @adddays = 1 --日期增量(可以自由设定)
SELECT @dDate = '01/01/2006' --开始日期
WHILE @dDate < '12/31/2010' --结束日期
BEGIN
SELECT @WeekString = DATENAME (dw, @dDate)
SELECT @sMonth=DATENAME(mm,@dDate)
SELECT @iYear= DATENAME (yy, @dDate)
SELECT @iDayOfMonth=DATENAME (dd, @dDate)
SELECT @iWeekOfYear= DATENAME (week, @dDate)
SELECT @iMonthOfYear=DATEPART(month, @dDate)
SELECT @sQuarter = 'Q' + CAST(DATENAME (quarter, @dDate)as varchar(1))
INSERT INTO time_by_day_dimension(the_date, the_day, the_month, the_year,
day_of_month,
week_of_year, month_of_year, quarter) VALUES
(@dDate, @WeekString, @sMonth, @iYear, @iDayOfMonth, @iWeekOfYear,
@iMonthOfYear, @sQuarter)
SELECT @dDate = @dDate + @adddays
END
END
分享到:
相关推荐
尽管其功能相对简单,但仍然支持创建存储过程,因此这个脚本可能同样包含存储过程来生成日期维度表。 创建日期维度表的存储过程通常会涉及以下步骤: - 定义表结构:确定日期维度表需要包含哪些日期属性,并创建...
在这个上下文中,时间维度生成程序可能包含一系列存储过程,这些过程被设计用来创建和维护时间维度表。它们可能包括生成特定时间范围的数据、填充缺失日期、处理闰年和非工作日等情况的逻辑。 接下来,我们看到文件...
2. **填充数据**: 运行存储过程`SP_GENERATE_TIME_DIMENSION`,该过程会自动生成一天内的所有分钟级别的时间维度数据。 3. **验证结果**: 执行查询语句检查`DIM_TIME`表中的数据是否正确生成。 #### 四、注意事项 ...
### PL/SQL 生成日期维度表 #### 一、创建日期维度表 在数据库系统中,日期维度表是数据仓库中的一个关键组成部分,用于存储与日期相关的各种属性,以支持复杂的查询和分析需求。以下是对如何使用 PL/SQL 创建一个...
动态交叉表则是指在数据库查询过程中,根据实际运行时的动态条件,生成交叉表查询结果的技术。本文将探讨如何在SQL Server数据库中利用存储过程实现动态交叉表。 首先,我们需要理解交叉表的基本概念。在数据分析和...
本文将详细介绍如何在BIRT中利用存储过程生成报表。 1. **概述** 存储过程可以理解为数据库中的可执行程序,它可以接收输入参数,处理数据,并可能返回结果。BIRT支持多种类型的存储过程返回值,包括单个结果集、...
以上代码创建了一个名为`#Temp_Change`的临时表,用于存储列转行过程中产生的中间结果。 3. **插入数据到临时表**: ```sql set @sql='insert into #Temp_Change select gid=0, info='',[ '+cast('+@changeCol+'...
2. **定义维度表**: 维度表描述了观察事实的角度,例如时间维度、地理位置维度等。PowerDesigner提供了便捷的工具来设计这些表,并支持层次结构的建立。 3. **关系连接**: 在PowerDesigner中,可以轻松地定义事实表...
维度模型是一种常用的数据仓库设计模式,它将数据组织成事实表和维度表,以便于业务分析和报告生成。在Cognos Report Studio中,利用维度模型可以创建具有高度交互性和深度分析能力的报表。维度模型通常包含以下元素...
例如,可以使用`std::vector<std::vector<int>>`存储数独矩阵,并使用`std::set`或`std::bitset`来快速检查行、列和小九宫格的合法性。高效的编程技巧,如内联函数、模板元编程和STL迭代器,可以进一步优化代码性能...
这种模型通常包括事实表和多个维度表,其中事实表存储具体度量值,而维度表则提供关于这些度量的背景信息或上下文。例如,在销售数据仓库中,事实表可能包含销售金额,而维度表则可能包括产品、时间、地点等信息。 ...
在Oracle数据库中,存储过程是预编译的SQL和PL/SQL...通过存储过程,我们可以根据需求动态生成SQL,使得代码更具灵活性和可扩展性。同时,Java的JDBC调用使得应用程序能够方便地与数据库进行交互,获取处理后的结果。
- **定义**:油站维度表主要用于记录加油站的相关信息,如位置、营业时间等。 - **开发要点**: - 设计字段时要考虑油站的基本属性,如地理位置坐标、所属公司等。 - 考虑与其他维度表(如服务网点维度表)的关系...
数据仓库是一种用于存储和管理企业历史数据的系统,旨在支持业务智能(BI)活动,如数据分析、报表生成和决策支持。与传统操作数据库相比,数据仓库通常具有更大的数据量和更复杂的数据结构。维度建模是一种专为数据...
5. **时间维度**:可能需要自定义工具(如 Winform 日期维度生成器)生成。 6. **事实表处理**:对于交易数据事实表,需要处理源系统与目标系统的键映射差异,使用“查找”组件来匹配源系统的键与数据仓库中的代理键...
事实表包含业务事件的核心测量值,如销售金额或生产数量,而维度表则提供对这些测量值的上下文理解,例如时间、地点或产品类别等。这种结构不仅简化了数据查询,还使得数据分析变得更加直观和高效。 ### 数据仓库的...
- 定义和部署多维数据集:利用向导自动生成多维数据集,选择事实表和维度表,映射时间属性,选择度量值,检测并创建维度层次结构。 #### 详细步骤解析 1. **创建项目**:启动Visual Studio,选择Analysis ...
星型模式的维度是独立的表,当对象模型转换为数据模型时,Rational Rose 可以生成维度的主键。 星型模式的优点在于它能够优化存储并保持数据结构的灵活性。然而,星型模式也存在一些缺陷,例如它不能满足数据挖掘的...