0

@pathがNULLでない 場合に条件付きとなる3つの変数があります@serverName,@analysisDB,@cubeName。したがってCASE、上記のSELECTステートメントでステートメントを使用しました。同様に、for@pathはNULLではなく、for@cubenameも条件付きである必要がありますLVL5.L5_CubeNameREPLACEステートメントを参照)が、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 
4

1 に答える 1

0

このようなもの:

CASE WHEN @path is not null or @path != '' 
THEN REPLACE(REPLACE(REPLACE(LVL5.L5_MDXQuery,'@@Level1',
ISNULL(@lvl1DataVal,'')),'@@Level2',ISNULL(@lvl2DataVal,'')),'@@CubeName',
ISNULL(@cubeName,'')) [MDXQuery]
ELSE Somethingelse END cubedata
于 2012-06-04T12:24:31.207 に答える