Sql如何切换表格

Sql how to switch tables

我有两个 table,其中一个有历史(cdr_hist)数据,其他 table 有今天的数据(cdr_stage)。我的脚本必须每 30 分钟 运行 计算最近 4 小时的数据,但每天晚上 12 点所有数据移动到 cdr_hist.

问题是当脚本 运行 在 12:00 时我如何切换并从历史记录 table 中获取数据,因为 cdr_stage 是空的... 我试过这个:

IF  OBJECT_ID   ('[**CDR_Stage**]') IS NOT NULL 
BEGIN
    Select.....
    From **CDR_Stage**
END
ELSE
    Select.....
    From **CDR_Hist**
END

但它无法正常工作... 有什么想法吗??

您需要检查记录是否存在,而不是 table 是否存在

IF EXISTS (SELECT 1
           FROM   CDR_Stage)
  SELECT *
  FROM   CDR_Stage
ELSE
  SELECT *
  FROM   CDR_Hist 

或动态Sql

DECLARE @sql VARCHAR(4000)

SET @sql = 'select * from '
           + CASE
               WHEN EXISTS (SELECT 1
                            FROM   CDR_Stage) THEN 'CDR_Stage'
               ELSE 'CDR_Hist'
             END

EXEC (@sql) 

不需要 IF,可以使用 sql 使用 UNIONNOT EXISTS() 来完成:

SELECT * FROM CDR_Stage
UNION ALL
SELECT * FROM CDR_Hist
WHERE NOT EXISTS(SELECT 1 FROM CDR_Stage) -- Second select will return data only if first one won't .