@path
がNULLでない
場合に条件付きとなる3つの変数があります@serverName,@analysisDB,@cubeName
。したがってCASE
、上記のSELECT
ステートメントでステートメントを使用しました。同様に、for@path
はNULLではなく、for@cubename
も条件付きである必要がありますLVL5.L5_CubeName
(REPLACE
ステートメントを参照)が、REPLACE
ステートメント内にあるCASE
ため、ブロックが複雑になりすぎます。こんなことをしたいのならどうやって書くの?
CASE WHEN @path!='' THEN @cubeName ELSE LVL5.L5_CubeName in the REPLACE statement
SELECT LVL5.L5_Id,
CASE WHEN @path!='' THEN @serverName ELSE LVL5.L5_ServerName END [AnalysisServer],
CASE WHEN @path!='' THEN @analysisDB ELSE LVL5.L5_AnalysisDatabase END [AnalysisDatabase],
REPLACE(REPLACE(REPLACE(LVL5.L5_MDXQuery,'@@Level1',ISNULL(@lvl1DataVal,'')),
'@@Level2',ISNULL(@lvl2DataVal,'')),'@@CubeName',ISNULL(@cubeName,'')) [MDXQuery],
LVL5.L5_ReplaceMDX [ReplaceMDX],
LVL5.L5_RefreshDate [RefreshDate],
LVL5.L5_ReportAttribute [ReportAttribute],
LVL5.L5_ReportTitle [ReportTitle]
FROM Report_SR_Level5 [LVL5]
WHERE L4_ID = @L4_ID ORDER BY LVL5.L5_DisplayOrder