你能做一个Select * FROM CASE WHEN语句

时间:2014-04-29 15:34:30

标签: sql-server-2008

是否可以在SQL Server查询的CASE WHEN子句中执行FROM语句?

例如

SELECT SaleDate 
FROM 
   CASE WHEN GETDATE() <= '01-Apr-2014' THEN tbl1 ELSE tbl2 END 

3 个答案:

答案 0 :(得分:18)

使用UNION:

SELECT SaleDate
FROM tbl1
WHERE GETDATE() <= '01-Apr-2014'
UNION ALL
SELECT SaleDate
FROM tbl2
WHERE GETDATE() > '01-Apr-2014'

答案 1 :(得分:2)

尝试使用IF / THEN

If getdate() <= '4/1/2014'
BEGIN
SELECT SaleDate FROM tbl1
END
ELSE
BEGIN
SELECT SaleDate from tbl2
END

答案 2 :(得分:-2)

不,你不能。如果你不耐烦地尝试它,那就显而易见了。如果您在SQL Server Management Studio中尝试过它,您会看到以下错误:

Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'CASE'.

有关FROM查询的SELECT子句的详细信息,请参阅MSDN文档 - FROM (Transact-SQL) [SQL Server 2008]。

我将此标记为社区维基,因为此问题并未表明提问者在发布之前进行了粗略的研究。