Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Vertica查询显式显示不存在的记录_Sql_Vertica - Fatal编程技术网

Sql Vertica查询显式显示不存在的记录

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_

我知道这听起来很奇怪,但我正在寻找一种方法,当一条记录实际上不存在时,强制Vertica显示一个指示器——也许用一个例子更容易理解

假设我想在一个表中查找3条记录,每一条记录都有一个唯一的job_id键:
(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的增量递增吗?