Sql Vertica查询显式显示不存在的记录
我知道这听起来很奇怪,但我正在寻找一种方法,当一条记录实际上不存在时,强制Vertica显示一个指示器——也许用一个例子更容易理解 假设我想在一个表中查找3条记录,每一条记录都有一个唯一的job_id键:Sql Vertica查询显式显示不存在的记录,sql,vertica,Sql,Vertica,我知道这听起来很奇怪,但我正在寻找一种方法,当一条记录实际上不存在时,强制Vertica显示一个指示器——也许用一个例子更容易理解 假设我想在一个表中查找3条记录,每一条记录都有一个唯一的job_id键:(100200300),我想为同一条记录获取一些其他字段,比如时间戳之类的 我会这样做: vsql> select job_id, date from my_table where job_id in (100,200,300); 如果只有100和300的记录,则结果应该是: job_
(100200300)
,我想为同一条记录获取一些其他字段,比如时间戳之类的
我会这样做:
vsql> select job_id, date from my_table where job_id in (100,200,300);
如果只有100
和300
的记录,则结果应该是:
job_id | date
--------+---------
100 | 01/01/01
300 | 03/03/03
我希望得到的结果是:
job_id | date
--------+---------
100 | 01/01/01
200 |
300 | 03/03/03
为什么??因为我希望将来自其他源的数据附加到查询的输出中,并且该源考虑所有作业的\u id,即使在我的\u表中没有它的记录
我知道您可以将一个表与其自身连接起来,但在这种情况下这不起作用,因为两个表(相同的,d'oh)中都没有丢失的记录。因此,这个问题看起来像是设计所阻止的,但我想知道是否有其他人也有同样的需要。提前谢谢 您可以使用
左连接
和子查询:
SELECT sub.job_id,
m.date,
CASE WHEN m.job_id IS NULL THEN 0 ELSE 1 END AS indicator
FROM (SELECT 100 AS job_id
UNION ALL SELECT 200
UNION ALL SELECT 300) AS sub
LEFT JOIN my_table m
ON sub.job_id = m.job_id;
我不知道Vertica
,但在SQL Server
中,您可以使用以下命令更改子查询:
值
- 从临时表中选择
- 从表变量/表值参数中选择
作业id
s?我会在表中填充它们并加入它们,或者对于少量的工作,使用下面的LAD205的答案。您的工作id值是可预测的吗?它们总是以100的增量递增吗?