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