有条件地为sql变量赋值

时间:2016-07-24 14:29:04

标签: sql sql-server-2008 sql-server-2008-r2

有没有办法有条件地为sql server中的变量赋值,比如

SET SDate = Isnull((Select StartDate from SData), Select EDate from Table2)

如果第一个查询返回null或没有记录,则应从tabl2中获取值。

1 个答案:

答案 0 :(得分:1)

你的版本非常接近。你可以这样写:

SET SDate = Isnull((Select StartDate from SData),
                   (Select EDate from Table2)
                  );

子查询总是需要用自己的括号包围。

也就是说,您的查询预先假定两个表最多只有一行。这似乎不是一个好的假设。如果其中任何一行有多行,您将获得一个"子查询返回多行"错误。