0
我有3个变量,这些变量在@path
不为NULL时是有条件的,即 @serverName,@analysisDB,@cubeName
。因此,我在上述SELECT
声明中使用了CASE
声明。同样,对于@path
不为NULL,@cubename
还需要LVL5.L5_CubeName
(请参见REPLACE
语句)的条件,但它在REPLACE
语句和CASE
块内变得太复杂了。我怎样写,如果我想要做这样的事情SQL Server 2008中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
请格式化你的问题要提出的是可读容易。你可能会觉得这很容易,但我认为让别人明白你想要什么是很困难的。如果你使用了一个简单的例子而不是粘贴你复杂的代码(例如你可能不是LVL5.L5_遍布整个样本) –
是的,我知道但是我意外地点击了帖子按钮,现在它不会让我这么做20分钟前 –
不知道我是否正确理解了您的问题?当你运行这个查询时发生了什么? – Rahul