我有一个简单的表格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
答案 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