因为我想使用动态日期时间值作为维度传递到我的OLAP多维数据集中。因为,我们有特定的FY格式。所以,我决定使用sql视图。我已经部分写完了我的sql视图。我需要使用多维数据集向导创建DateTime表时的所有列。 ie, PK_Date, Date_Name, Fiscal_Year, Fiscal_Year_Name, Fiscal_Half_Year, Fiscal_Half_Year_Name etc....
但是,只有从多维数据集向导生成DateTime表时才更改,在我们的方法中,我们将使用视图表作为DateTime维度的源表。
目前我已完成以下代码
ALTER VIEW [dbo].[FYExtraction] AS WITH E1(N) AS
(SELECT 1
FROM (
VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) DT(N)),
E2(N) AS
(SELECT 1
FROM E1 A, E1 B),
E4(N) AS
(SELECT 1
FROM E2 A, E2 B),
Numbers(N) AS
( SELECT ROW_NUMBER() OVER (
ORDER BY
(SELECT NULL)) - 1
FROM E4 )
SELECT temp.PK_Date,
CASE
WHEN (temp.PK_Date >= cast(cast(year(temp.PK_Date) AS varchar(10))+'-'+
(SELECT Line2
FROM SiteFile
WHERE code='ACQFY') AS datetime)
AND temp.PK_Date <= cast(cast(year(temp.PK_Date)+1 AS varchar(10))+'-'+
(SELECT Line3
FROM SiteFile
WHERE code='ACQFY') AS datetime)) THEN 'FY '+ cast(year(temp.PK_Date) AS varchar(100))
ELSE 'FY '+cast(year(temp.PK_Date) -1 AS varchar(100))
END AS Fiscal_Year_Name
FROM
(SELECT N,
DATEADD(D, N,
(SELECT cast(
(SELECT top 1 cast(year(CreatedOn)-1 AS varchar(10))
FROM items
ORDER BY CreatedOn ASC)+'-'+Line2 AS datetime)
FROM sitefile
WHERE code='ACQFY')) AS PK_Date
FROM Numbers
WHERE N <= DATEDIFF(D,
(SELECT cast(
(SELECT top 1 cast(year(CreatedOn)-1 AS varchar(10))
FROM items
ORDER BY CreatedOn ASC)+'-'+Line2 AS datetime)
FROM sitefile
WHERE code='ACQFY'),
(SELECT cast(
(SELECT top 1 cast(year(CreatedOn)+1 AS varchar(10))
FROM items
ORDER BY CreatedOn DESC)+'-'+Line3 AS datetime)
FROM sitefile
WHERE code='ACQFY')))AS TEMP GO