从T-SQL中上面一行的select语句中获取值

时间:2015-09-24 13:38:08

标签: sql-server

我想获取返回前一个select语句的值(类似于@@IDENTITY函数)

代码:

IF EXISTS (SELECT MyCriticalValue
           FROM Units u
           JOIN pUnit pu
             ON pu.UnitID = u.UnitID
           WHERE u.ChildUnitID = ( SELECT ps.UnitID
                                   FROM psUnit ps
                                   WHERE ps.Code = @CurrentCode)
            AND pu.Type = 117
            AND u.TypeID = 1 )
BEGIN
  SET @CriticalValue = @@identity
END

我知道@@IDENTITY不起作用,因为这仅适用于插入。是否有类似的功能来实现我想要的功能(即将select#34; MyCriticalValue"从select语句转换为变量@CriticalValue而不输入整个SELECT语句两次)。

修改

澄清:当我在我的SQL脚本中已经设置@CriticalValue时,如果select语句返回任何内容,我应该只覆盖它,所以不应该在任何其他情况下覆盖它。

1 个答案:

答案 0 :(得分:4)

SELECT @CriticalValue = ISNULL(MyCriticalValue, @CriticalValue)
FROM Units u
JOIN pUnit pu
 ON pu.UnitID = u.UnitID
WHERE u.ChildUnitID = (
                        SELECT ps.UnitID
                        FROM psUnit ps
                        WHERE ps.Code = @CurrentCode
                      )
  AND pu.Type = 117
  AND u.TypeID = 1;

IF @CriticalValue IS NOT NULL
...

我假设您的查询返回一个值。