2016-01-20 96 views
0
SELECT TOP (1) 
    B.StartDate, 
    CASE 
     WHEN B.startdate < getdate() THEN 1 
     WHEN B.startdate > GETDATE() THEN 2 
     ELSE 3 
    END AS Status, 
    CASE 
     WHEN BU.UserID = @UserID THEN 1 
     ELSE 2 
    END AS Ownership 
FROM 
    TblA AS B 
INNER JOIN 
    TblB AS BF ON B.ID = BF.Id 
INNER JOIN 
    TblC AS BU ON B.ID = BU.ID  
WHERE 
    B.Deleted = 'False' 
ORDER BY 
    Status, Ownership 

我想在SQL Server CE中運行上述查詢,它不允許我在數據表(xsd)中聲明變量。而且可見的是我不能寫多個查詢,因爲它是CE。那麼根據我的條件,有什麼解決辦法?帶有參數的SQL案例語句

@UserID - 它一直說在參數集合中不存在 - 因爲我認爲,因爲我在CASE中使用它,所以它抱怨。

enter image description here

enter image description here

+0

您正在收到.NET錯誤,但只顯示SQL。請顯示如何設置查詢('sqlParameter.ParameterName =「@UserID」','sqlCommand.Parameters.Item(「@ UserID」).Value = userId;',...) –

+0

不太確定如果我有你的問題。但我試圖在xsd中創建一個數據表並在其上創建一個填充方法 - 以返回行。 –

+0

恐怕我在這裏沒有經驗的幫助。我希望別人能。 –

回答

0

Case語句可以使用變量檢查。

沒有太多評論的聲譽,只是在這裏詢問 您能否提供您的要求的更多細節。

你是否在此sql段之前聲明瞭變量,如果不是隻是嘗試添加以下內容: 聲明@UserID integer = 1,然後再次執行該語句。

+0

剛剛添加了我嘗試保存時出現的實際錯誤。 –

+0

我想在SQL CE中執行上面的操作,它不允許我在.net中使用此查詢時不允許我在數據表(xsd) –

+0

中聲明變量,然後您可以從代碼中替換此變量... – shubham