如果特定行不存在,请从更新的表中选择数据

时间:2012-05-14 12:05:25

标签: sql tsql

我有一个简单的表格TBL,由两列Err_type和Val组成。 需要从中选择所有日期。似乎很简单,但是当特定行不存在时会变得更加丑陋。

with cte as (
select TBL.Err_type, TBL.Val from TBL
where TBL.Err_type = 4 or TBL.Err_type = 2
)

select * from cte

在给定的日期时间范围内可能不存在“4”或“2”。所以我需要插入缺失的行(Err_type为“4”或“2”,Val为“0”)然后获取表格。

e.g。

 Err_type | Val     
 ---------------
     4    | 50
     2    |  0 

而不是

 Err_type | Val     
 ---------------
     4    | 50

1 个答案:

答案 0 :(得分:0)

使用以下sql检查是否存在记录,如果没有找到则插入。

WITH cte 
     AS (SELECT * 
         FROM   TBL 
         WHERE  TBL.Err_Type IN ( 4, 2 ) 
         UNION 
         SELECT 4, 
                0 
         WHERE  NOT EXISTS (SELECT 1 
                            FROM   TBL 
                            WHERE  TBL.Err_Type = 4) 
         UNION 
         SELECT 2, 
                0 
         WHERE  NOT EXISTS (SELECT 1 
                            FROM   TBL 
                            WHERE  TBL.Err_Type = 2)) 
SELECT * 
FROM   cte