包含参数的SQL Case语句 选择顶部(1) B.开始日期, 案例 当B.startdateGETDATE()时,则为2 其他3 以身份结束, 案例 当BU.UserID=@UserID时,则为1 其他2 以所有权结束 从…起 TblA AS B 内连接 TblB作为B.ID上的BF=BF.ID 内连接 待决信用证作为B.ID上的业务单位=业务单位ID 哪里 B.删除='False' 订购人 地位、所有权

包含参数的SQL Case语句 选择顶部(1) B.开始日期, 案例 当B.startdateGETDATE()时,则为2 其他3 以身份结束, 案例 当BU.UserID=@UserID时,则为1 其他2 以所有权结束 从…起 TblA AS B 内连接 TblB作为B.ID上的BF=BF.ID 内连接 待决信用证作为B.ID上的业务单位=业务单位ID 哪里 B.删除='False' 订购人 地位、所有权,sql,.net-3.5,windows-ce,Sql,.net 3.5,Windows Ce,我正在尝试在SQLServerCE中运行上述查询,其中不允许我在datatable(xsd)中声明变量。可见,我无法编写多个查询,因为它是CE。考虑到我的情况,有什么解决办法吗 @UserID-它一直在说参数集合中不存在这种情况-我认为这是因为我在使用它以防万一,这就是它抱怨的原因 Case语句可以使用变量进行检查 没什么好评论的,只是在这里问一下 你能提供更多关于你的要求的细节吗 您是否在此sql段之前声明了变量,如果不只是尝试添加以下内容: 声明@UserID integer=1,然后再次

我正在尝试在SQLServerCE中运行上述查询,其中不允许我在datatable(xsd)中声明变量。可见,我无法编写多个查询,因为它是CE。考虑到我的情况,有什么解决办法吗

@UserID
-它一直在说参数集合中不存在这种情况-我认为这是因为我在使用它以防万一,这就是它抱怨的原因


Case语句可以使用变量进行检查

没什么好评论的,只是在这里问一下 你能提供更多关于你的要求的细节吗

您是否在此sql段之前声明了变量,如果不只是尝试添加以下内容:
声明@UserID integer=1,然后再次执行该语句。

刚刚添加了我试图保存它时出现的实际错误。我正在尝试在SQL CE中执行上述操作,如果您使用.net中的此查询,它不允许我在datatable(xsd)中声明变量,然后您可以从代码中替换此变量…如果您无法在SQL CE中声明变量,请转到函数或存储过程,然后从那里您可以将值传递给SQL case语句。如果它起作用,您可以投票给此答案1,以便其他用户也可以从此答案中获益。您将得到一个.NET错误,但只显示SQL。请显示您如何设置查询(
sqlParameter.ParameterName=“@UserID”
sqlCommand.Parameters.Item(“@UserID”)。Value=UserID;
,…)我不太确定是否收到了您的问题。但我正试图在xsd中创建一个数据表,并在其上创建一个fill方法来返回行。由于缺乏经验,我恐怕在这里无能为力。我希望其他人可以。
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