如何在MS SQL中的CASE条件内编写select查询

如何在MS SQL中的CASE条件内编写select查询,sql,sql-server,Sql,Sql Server,我有一个Sql查询。它没有任何编译错误,但在运行时显示 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。 SELECT a.UserID FROM USERGROUPS a WHERE a.GroupID IN (CASE WHEN @group_id IS NULL THEN (select groupid from usergroups) ELSE CASE WHEN @gro

我有一个Sql查询。它没有任何编译错误,但在运行时显示
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。

 SELECT a.UserID FROM USERGROUPS a WHERE a.GroupID IN 
                      (CASE WHEN @group_id IS NULL THEN (select groupid from usergroups) ELSE 
                       CASE WHEN @group_id=0 THEN (select groupid from usergroups  where userid = @userid)ELSE
                      @group_id END END )
提前谢谢。

[案例]评估条件列表并返回多个可能条件的一个 结果表达式

基本上,您可以在案例中使用SELECT,但它只需返回一个结果,而不必返回列表(这是一种只能在运行时进行计算的结果,这就是为什么查询结果在形式上正确,但在启动时失败的原因)

如果您能告诉我们更多关于您正在尝试做的事情,也许我可以帮助您重写您的查询

请尝试以下操作:

SELECT a.UserID 
  FROM USERGROUPS a 
  WHERE 
    (@groupid is NUll and a.GroupID IN   (select groupid from usergroups)) 
     or (@groupid = 0 and a.GroupID IN  (select groupid from usergroups  where (userid = @userid)))
      or a.GroupID IN  (@groupid)