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语句。