Sql server 在MSSQL中使用IF和外部应用

Sql server 在MSSQL中使用IF和外部应用,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,如果外部条件适用,我想写。我需要返回多个列,所以我不想写子查询 SELECT name FROM v_users OUTER APPLY ( IF CAST(reg_date AS DATE)<CAST('03/25/2017' AS DATE) SELECT gender,email,age,class FROM tb_register_old WHERE id=v_users.user_id; ELSE SELECT gender,email,age,class

如果外部条件适用,我想写。我需要返回多个列,所以我不想写子查询

SELECT name FROM v_users 
OUTER APPLY
(
    IF CAST(reg_date AS DATE)<CAST('03/25/2017' AS DATE)
   SELECT gender,email,age,class FROM tb_register_old WHERE id=v_users.user_id;
ELSE 
   SELECT gender,email,age,class FROM tb_register_new WHERE id=v_users.user_id;
)s
也许是这个

SELECT name FROM v_users 
OUTER APPLY
(
 SELECT gender,email,age,class 
 FROM tb_register_old 
 WHERE id=v_users.user_id and CAST(reg_date AS DATE)<CAST('03/25/2017' AS DATE)

 UNION ALL  

 SELECT gender,email,age,class 
 FROM tb_register_new 
 WHERE id=v_users.user_id and CAST(reg_date AS DATE) >= CAST('03/25/2017' AS DATE)
)s

你的问题是什么?如何编写外部条件中的IF条件来应用不同的查询?谢谢伙计,这确实是一个很好的解决方案,但我需要使用IF条件。可能吗?@Axmed这是你需要的结果,你为什么坚持使用IF?无论如何,在查询中都不能使用IF。