sql - Microsoft SQL Server - 条件变量赋值
问题描述
我试图在 Microsoft SQL Server 中做这样的事情:
DECLARE @isparent int;
SET @isparent = iif(account.parentid is not null,
1,
0);
SELECT
IIF(@isparent = 1,
parentenrollment,
enrollment) "Enrollment"
FROM
Accounts
显然这大大简化了,但想法是在一个变量(@isparent,上面)中存储一个基于表中某些内容的值,然后重新读取该变量,使用它来确定要显示的值。
这可能吗?如果是这样,怎么做?
解决方案
根据您的代码,您不需要变量,我认为您正在尝试这样做
SELECT
IIF(parentid is not null,
parentenrollment,
enrollment) Enrollment
FROM
Accounts
和它一样
SELECT CASE WHEN ParentId IS NOT NULL THEN ParentEnrollment
ELSE Enrollment
END Enrollment
FROM Accounts
如果您真的想检查是否parentid
为空并将值存储在变量中,那么您的查询应该返回一 (1) 行,这可以通过两种方式完成
TOP 和 ORDER BY
SELECT TOP 1 @isparent = IIF(parentid IS NOT NULL, 1, 0) FROM Accounts ORDER BY <Your Order Here>
带有仅返回 1 行的条件的 WHERE 子句
SELECT @isparent = IIF(parentid IS NOT NULL, 1, 0) FROM Accounts WHERE <Type Your Condition(s) Here>
推荐阅读
- go - 如何通过 pgx 构建我的 Go 应用程序以进行交易
- javascript - Javascript在单击不起作用时将表情符号图标插入文本区域
- python - Python:venv 中的 pip 不会在 venv 中安装包。而是将软件包安装在默认位置。有什么问题?
- nestjs - nestjs 实体到 dto 这是最佳实践吗?
- sql - 从表中获取值子集的最有效方法?
- r - R中的广义线性模型(GLM)
- javafx - 如何在场景级别找到在我的场景中单击的标签和按钮节点的 ID?
- python - 使用 Ubuntu 启动 Anaconda-Navigator 时遇到问题
- javascript - 有什么方法可以将 svg url 转换为
- angular - 如何将输入传递给Angular中的模态对话框?