欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

分享OLAP的時(shí)間維度設(shè)計(jì)語句

系統(tǒng) 1835 0

時(shí)間維度在OLAP中是很常用,我們一般分為日期維度和時(shí)刻維度組成。我整理了如何生成他們的語句如下

1)日期維度[Dim_Date]

View Code
        IF EXISTS(
        
          select
        
         * FROM sys.objects WHERE object_id = OBJECT_ID(N
        
          '
        
        
          [dbo].[Dim_Date]
        
        
          '
        
        )AND type 
        
          in
        
        (N
        
          '
        
        
          U
        
        
          '
        
        
          ))

Drop table [dbo].[Dim_Date]

GO

CREATE TABLE [dbo].[Dim_Date](

    DateKey [
        
        
          int
        
        
          ] NOT NULL,

    [TheDate] [datetime] NULL, 
        
        --
        
          DateTime格式的日期

    [TheDateName] [nvarchar](
        
        
          10
        
        )NULL, --
        
          日期名稱

    [TheYear] [smallint] NULL,
        
        --
        
          年份

    [TheYearName] [nvarchar](
        
        
          10
        
        )NULL,--
        
          年份名稱

    [TheMonth] [smallint] NULL,
        
        --
        
          月份

    [TheMonthName] [nvarchar](
        
        
          10
        
        )NULL,--
        
          月份名稱

    [TheDay] [smallint] NULL,
        
        --
        
          日

    [TheDayName] [nvarchar](
        
        
          10
        
        )NULL,--
        
          日的名稱

    [TheQuarter] [smallint] NULL,
        
        --
        
          季度

    [TheQuarterName] [nvarchar](
        
        
          10
        
        )NULL,--
        
          季度名稱

    [TheWeek] [smallint] NULL,
        
        --
        
          星期

    [TheWeekName] [nvarchar](
        
        
          10
        
        )NULL,--
        
          星期名稱  

    [Vacation_Mark] [smallint] NULL,
        
        --
        
          節(jié)假日標(biāo)志

    [TheWW] [smallint] NULL,
        
        --
        
          周

    [TheWWName] [nvarchar](
        
        
          20
        
        ) NULL --
        
          周名稱

)ON [PRIMARY]





DECLARE

@DateKey 
        
        
          int
        
        
          ,

@TheDate datetime,

@TheDateName nvarchar(
        
        
          10
        
        
          ),                    

@TheYear smallint,    

@TheYearName nvarchar(
        
        
          10
        
        
          ),

@TheMonth smallint,

@TheMonthName nvarchar(
        
        
          10
        
        
          ),

@TheDay smallint,

@TheDayName nvarchar(
        
        
          10
        
        
          ),

@TheQuarter smallint,

@TheQuarterName nvarchar(
        
        
          10
        
        
          ),

@TheWeek smallint,                    

@TheWeekName nvarchar(
        
        
          10
        
        
          ),

@Vacation_Mark smallint,

@TheWW smallint,

@TheWWName nvarchar(
        
        
          20
        
        
          ),

@dDate DATETIME,
        
        --
        
          存儲(chǔ)起始日期和結(jié)束日期

@adddays smallint
        
        --
        
          存儲(chǔ)日期增量





SELECT @adddays 
        
        = 
        
          1
        
         --
        
          日期增量


        
        --_select @dDate = 
        
          '
        
        
          1/1/2000
        
        
          '
        
        --
        
          當(dāng)前日期


        
        --WHILE @dDate <= 
        
          '
        
        
          12/31/2010
        
        
          '
        
        --
        
          結(jié)束日期

SELECT @dDate 
        
        = 
        
          '
        
        
          1/1/2012
        
        
          '
        
         --
        
          取當(dāng)前系統(tǒng)時(shí)間維度表最大日期

WHILE @dDate 
        
        <= 
        
          '
        
        
          12/31/2012
        
        
          '
        
        --
        
          結(jié)束日期:當(dāng)前日期往后順延5年,可以根據(jù)實(shí)際需求設(shè)置時(shí)長

BEGIN



    
        
        
          select
        
         @DateKey=cast((left(convert(nvarchar,@dDate,
        
          23
        
        ),
        
          4
        
        )+substring(convert(nvarchar,@dDate,
        
          23
        
        ),
        
          6
        
        ,
        
          2
        
        )+
        
          

substring(convert(nvarchar,@dDate,
        
        
          23
        
        ),
        
          9
        
        ,
        
          2
        
        ))
        
          as
        
        
          int
        
        
          )

    SELECT @TheDate 
        
        =
        
           @dDate

    SELECT @TheDateName 
        
        = REPLACE(CONVERT(nvarchar(
        
          20
        
        ),@dDate,
        
          111
        
        ),
        
          '
        
        
          /
        
        
          '
        
        ,
        
          '
        
        
          -
        
        
          '
        
        
          )

    SELECT @TheYear 
        
        =
        
           DATENAME(yy, @dDate)

    SELECT @TheYearName 
        
        = CAST(@TheYear 
        
          as
        
         nvarchar)+
        
          '
        
        
        
          '
        
        
          

    SELECT @TheMonth 
        
        =
        
           DATENAME(mm, @dDate)

    SELECT @TheMonthName 
        
        =CAST(@TheMonth 
        
          as
        
         nvarchar)+
        
          '
        
        
        
          '
        
        
          

    SELECT @TheDay 
        
        =
        
           DATENAME(dd, @dDate)

    SELECT @TheDayName 
        
        = CAST(@TheDay 
        
          as
        
         nvarchar)+
        
          '
        
        
        
          '
        
        
          

    SELECT @TheQuarter 
        
        =
        
           DATENAME(Quarter, @dDate)

    SELECT @TheQuarterName 
        
        = 
        
          '
        
        
        
          '
        
         + CAST(DATENAME(Quarter, @dDate)
        
          as
        
         varchar(
        
          1
        
        ))+
        
          '
        
        
          季度
        
        
          '
        
        
          

    SELECT @TheWeek 
        
        =
        
           DATEPART(dw, @dDate)

    SELECT @TheWeekName 
        
        =
        
           DATENAME(dw,@dDate)

    SELECT @Vacation_Mark 
        
        = CASE WHEN(@TheWeek = 
        
          1
        
         OR @TheWeek = 
        
          7
        
        )THEN 
        
          1
        
         ELSE 
        
          0
        
        
           END

    
        
        
          select
        
         @TheWW=
        
           DATEPART(wk, @dDate)

    
        
        
          select
        
         @TheWWName=
        
          '
        
        
        
          '
        
        +CAST(DATEPART(wk, @dDate)
        
          as
        
         varchar(
        
          2
        
        ))+
        
          '
        
        
        
          '
        
        
            



INSERT INTO Dim_Date(DateKey,TheDate,TheDateName,TheYear,TheYearName,TheMonth,TheMonthName,TheDay,

                        TheDayName,TheQuarter,TheQuarterName,TheWeek,TheWeekName,Vacation_Mark,TheWW,TheWWName)VALUES

(@DateKey,@TheDate, @TheDateName,@TheYear,@TheYearName,@TheMonth,@TheMonthName,@TheDay,@TheDayName,@TheQuarter,

    @TheQuarterName,@TheWeek,@TheWeekName,@Vacation_Mark,@TheWW,@TheWWName)

   SELECT @dDate 
        
        = @dDate +
        
           @adddays

END

GO
        
      

2)時(shí)刻維度[Dim_Time]

View Code
        IF EXISTS(
        
          select
        
        * FROM sys.objects WHERE object_id = OBJECT_ID(N
        
          '
        
        
          [dbo].[Dim_Time]
        
        
          '
        
        )AND type 
        
          in
        
        (N
        
          '
        
        
          U
        
        
          '
        
        
          ))

Drop table [dbo].[Dim_Time]

CREATE TABLE [dbo].[Dim_Time](

    [TimeKey]  
        
        
          int
        
         IDENTITY(
        
          1
        
        ,
        
          1
        
        
          )NOT NULL,

    [TheHour]  smallint NULL, 
        
        --
        
          小時(shí)

    [TheHourName] nvarchar(
        
        
          5
        
        ) NULL,--
        
          小時(shí)名稱

    [HalfHour] smallint NULL, 
        
        --
        
          半小時(shí)

    [HalfHourName] nvarchar(
        
        
          10
        
        )NULL, --
        
          半小時(shí)名稱

    [Min] smallint NULL, 
        
        --
        
          分鐘

    [minName] nvarchar(
        
        
          10
        
        )NULL --
        
          分鐘名稱

)ON [PRIMARY]

DECLARE

@dHour smallint,

@addhours smallint,

@chour nvarchar(
        
        
          5
        
        
          ),

@dhhour smallint,

@hhourname nvarchar(
        
        
          10
        
        
          ),

@dMin smallint,

@dMinName nvarchar(
        
        
          10
        
        
          )


        
        
          select
        
         @dHour = 
        
          0
        
               --
        
          起始小時(shí)


        
        
          select
        
         @dhhour = 
        
          1
        
              --
        
          起始半小時(shí)


        
        
          select
        
         @dmin = 
        
          0
        
                --
        
          起始分鐘

WHILE  @dHour 
        
        <= 
        
          23
        
        
          

BEGIN

   WHILE @dmin 
        
        <=
        
          59
        
        
          

         BEGIN

          
        
        
          select
        
         @dhhour =
        
          

        CASE

        WHEN @dMin 
        
        >=
        
          0
        
          and @dMin <=
        
          29
        
          THEN 
        
          1
        
        
          

        WHEN @dMin 
        
        >=
        
          30
        
         and @dMin <=
        
          59
        
          THEN 
        
          2
        
        
           END

          
        
        
          select
        
         @hhourname =
        
          

        CASE

        WHEN @dhhour 
        
        =
        
          1
        
          THEN 
        
          '
        
        
          前半小時(shí)
        
        
          '
        
        
          

        WHEN @dhhour 
        
        =
        
          2
        
          THEN 
        
          '
        
        
          后半小時(shí)
        
        
          '
        
        
           END

        
        
        
          select
        
         @dMinName = cast(@dhour 
        
          as
        
         nvarchar)+
        
          '
        
        
          :
        
        
          '
        
        +(
        
          case
        
         when len(@dmin)=
        
          1
        
         then(
        
          '
        
        
          0
        
        
          '
        
        +cast(@dmin 
        
          as
        
        
           nvarchar))       

         
        
        
          else
        
         cast(@dmin 
        
          as
        
        
           nvarchar)end)

         
        
        
          select
        
         @chour = cast(@dhour 
        
          as
        
         nvarchar)+ 
        
          '
        
        
          :00
        
        
          '
        
        
          

insert INTO Dim_Time(TheHour,TheHourName,HalfHour,HalfHourName,Min,MinName)VALUES

       (@dHour,@chour,@dhhour,@hhourname,@dMin,@dMinName)

        
        
        
          select
        
         @dMin = @dMin + 
        
          1
        
        
          

        END


        
        
          select
        
         @dmin = 
        
          0
        
        
          select
        
         @dHour = @dHour + 
        
          1
        
        
          

END

GO
        
      

分享OLAP的時(shí)間維度設(shè)計(jì)語句


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产一级毛片夜一级毛片 | pornoⅹxxxxhd麻豆| 中文字幕在线视频日本 | 国产午夜精品久久久久久久蜜臀 | 欧美激情精品久久久久久久 | 日本三级香港三级网站 | 精品一区二区国语对白 | 欧美视频在线第一页 | 成在线人免费视频一区二区三区 | 狠狠综合久久综合鬼色 | 午夜神器18以下不能进免费观看 | 亚洲天堂av在线 | 7777精品伊人久久久大香线蕉 | 国产精品中文在线 | 国产精品密蕾丝视频下载 | 精品一区二区三区不卡 | 欧美高清在线视频一区二区 | 国产免费一区二区 | 日本高清香蕉色视频在线观看 | 日韩欧美亚洲综合 | 久久婷婷是五月综合色狠狠 | 欧美狠狠操| 中国明星一级毛片免费 | 久在线看 | chengrenwangzhan.b| 日韩成人高清 | 午夜影皖 | 91视频观看免费 | 欧美中文字幕一区二区 | 超级碰碰碰视频在线观看 | 久久经典视频 | 精品一区二区免费视频视频 | 亚洲一区在线观看视频 | 国产欧美综合精品一区二区 | 免费高清伧理片午夜伧理片 | 91资源在线 | 国产亚洲精品看片在线观看 | 中文字幕第二页 | 欧美成人免费丝袜视频在线观看 | 五月激情综合网 | 国产精品免费av |