Netezza SQL 比较同一表中的两条记录

Posted

技术标签:

【中文标题】Netezza SQL 比较同一表中的两条记录【英文标题】:Netezza SQL comparing two records in the same table 【发布时间】:2014-09-22 14:22:24 【问题描述】:

我正在尝试从一个表 (#1) 到另一个表 (#2) 进行基本插入,但是我在表 #2 中创建了一个标志列,为了正确设置,我需要能够确定源表中 2 条记录之间的差异 (#1)。这第二个表是一种验证表。它表示表 #1 中有多个记录,但它们是不同的版本(不同的版本是表 #1 中只有 1 或两个补充字段不同),表 #2 将显示两者之间的不同/三个版本。

在表 #2 中,我将有一个“为什么要添加”标志,这将是“P”、“B”或“J”,具体取决于表 #1 中的源记录。

如果表 #1 中两条记录之间的差异在日期列中,则标志将为“P”。如果两条记录之间的差异在列数量上,则标志将为“B”。如果差值是日期和金额,则标志将设置为“J”。

那么在我的插入语句中,我将如何比较同一张表中的两条记录的字段呢?

任何建议将不胜感激。我相信 Netezza SQL 我无法创建虚拟表,这就是为什么 google 不能很好地为我服务的原因。

【问题讨论】:

最好包含一个代码 sn-p。 【参考方案1】:
select t1.id, 'j'
from table t1 
join table t2 
  on t2.id  t1.id 
 and t2.date <> t1.date 
 and t2.amount <> t2.amount;
select t1.id, 'p'
from table t1 
join table t2 
  on t2.id == t1.id 
 and t2.date <> t1.date 
 and t2.amount = t2.amount;
select t1.id, 'b'
from table t1 
join table t2 
  on t2.id = t1.id 
 and t2.date = t1.date 
 and t2.amount <> t2.amount;

【讨论】:

以上是关于Netezza SQL 比较同一表中的两条记录的主要内容,如果未能解决你的问题,请参考以下文章

是否有在 sql 表中的两条记录之间添加新记录的语法?

请问如何使用SQL语句查询同一张表中互为相反数的两条记录!如A1=500,A2=-500,如何写SQL语句

减去表中同一列的两条记录

SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条?

在 SQL 中排序时如何比较同一表中的两行?

如何为mysql中的每条记录检索表中的两条记录