Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用case语句为后续子查询声明局部变量?_Sql_Sql Server - Fatal编程技术网

Sql 如何使用case语句为后续子查询声明局部变量?

Sql 如何使用case语句为后续子查询声明局部变量?,sql,sql-server,Sql,Sql Server,是否可以根据情况声明一个局部变量,然后触发一个公共子查询 伪代码: SELECT CASE WHEN TABLE.TYPE = 'STUDENT' variable = "UNIVERSITY" WHEN TABLE.TYPE = 'EMPLOYEE' variable = "EMPLOYER" (Some big query here it has a common joins / groupings but the variable chang

是否可以根据情况声明一个局部变量,然后触发一个公共子查询

伪代码:

SELECT 
    CASE
      WHEN TABLE.TYPE = 'STUDENT'  variable  = "UNIVERSITY"
      WHEN TABLE.TYPE = 'EMPLOYEE' variable = "EMPLOYER"
     (Some big query here it has a common joins / groupings but the variable changes)
   END AS NAME
FROM TABLE
正在寻找SQL Server解决方案

场景是这样的-我有一个列出一些成员信息的查询。现在我需要获得一些现有查询的补遗数据——我的意思是结果集不会改变。我实际上可以加入,但我必须过滤掉很多东西——这有意义吗?想象一下,我正在显示表中的所有成员,有人让我显示大学名称或雇主名称。最大的问题是,一个会员可以有不止一所他就读过的大学——对雇主来说也是如此。在这种情况下,联接的性能不是很差吗?因为有很多一对多的东西。另外请注意,作为分页的一部分,我最终只显示了10条记录,所以我认为我应该做一个案例陈述

DECLARE @variable  varchar(10)

SELECT  @variable = 
CASE
  WHEN t.TYPE = 'STUDENT'  THEN 'UNIVERSITY'
  WHEN t.TYPE = 'EMPLOYEE' THEN 'EMPLOYER'
  ELSE 'Undefined'
END
FROM TableName t

如果SELECT语句返回多个值,则变量为 指定了最后返回的值


“big query”表示多条记录,但您希望将其分配给单个变量。遗憾的是,“big query”返回单个名称:)动态SQL或CTE(WITH子句)可能是选项。您的伪代码不清楚。为什么大问题出现在case when语句中?我试图解释它。你认为这有意义吗?我现在把子查询放在哪里?在案例陈述中还是在案例陈述之外?“大查询”是派生值的关键:)@Nishant:它属于主查询(位于…后面),而不属于case语句。