Microsoft SQL Server-条件变量分配

Microsoft SQL Server-条件变量分配,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试在Microsoft SQL Server中执行以下操作: DECLARE @isparent int; SET @isparent = iif(account.parentid is not null, 1, 0); SELECT IIF(@isparent = 1, parentenrollment, enrollment) "Enrol

我正在尝试在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,上图)中存储一个值,然后重新读取该变量,使用它来确定要显示的值

这可能吗?如果是,如何使用?

您可以使用:

DECLARE @isparent int;

SELECT @isparent = IIF(parentid is not null, parentenrollment, enrollment)
FROM    Accounts
WHERE ... --  condition that returns single row

根据您的代码,您不需要输入变量,我认为您正在尝试按照

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
是否为null并将值存储在变量中,那么您的查询应该返回一(1)行,这可以通过两种方式完成

  • 上下订单

    SELECT TOP 1 @isparent = IIF(parentid IS NOT NULL, 1, 0)
    FROM Accounts
    ORDER BY <Your Order Here>
    
    选择TOP 1@isparent=IIF(parentid不为NULL,1,0)
    来自帐户
    订购人
    
  • WHERE子句,其条件仅返回1行

    SELECT @isparent = IIF(parentid IS NOT NULL, 1, 0)
    FROM Accounts
    WHERE <Type Your Condition(s) Here>
    
    SELECT@isparent=IIF(parentid不为NULL,1,0)
    来自帐户
    哪里
    

我想
account.parentid
是一个打字错误,您的意思是
accounts.parentid