Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 基于前一天计算值而不使用联接_Sql_Teradata - Fatal编程技术网

Sql 基于前一天计算值而不使用联接

Sql 基于前一天计算值而不使用联接,sql,teradata,Sql,Teradata,我在下面有一个表格,里面有一些示例数据。我想创建一个新属性2_day_state。2_day_state查看每一行的状态,并将其与前一天的类似行进行比较。关于如何根据接下来两天的值计算2_day_状态,有几个案例陈述。例如,我们根据第1天和第2天的状态确定第2天状态(第2天)的值 这似乎是一个简单的任务,我们可以执行自连接来实现这一点。 实际上,该表有许多属性,它们是键的一部分。其中一些值可以为null。因为我们不能加入null=null,所以必须有另一种方法来计算2天的状态。有什么想法吗 日

我在下面有一个表格,里面有一些示例数据。我想创建一个新属性2_day_state。2_day_state查看每一行的状态,并将其与前一天的类似行进行比较。关于如何根据接下来两天的值计算2_day_状态,有几个案例陈述。例如,我们根据第1天和第2天的状态确定第2天状态(第2天)的值

这似乎是一个简单的任务,我们可以执行自连接来实现这一点。 实际上,该表有许多属性,它们是键的一部分。其中一些值可以为null。因为我们不能加入null=null,所以必须有另一种方法来计算2天的状态。有什么想法吗

  • 日间状态
  • 天=1,州=7
  • 日期=2,状态=1
  • 天=3,州=4
  • 日期=4,状态=0

不正确,您可以在table1.ID=table2.ID和(table1.field1=table2.field2或(table1.field1为NULL,table2.field2为NULL))上加入NULL:
。另一方面,您确实应该避免使用值可以为null的键。

您是否尝试过分析函数,
MIN(col)OVER(按col1、col2、col3按col4排序)
?您能显示一些示例行和预期结果吗?@Rabbit:在Teradata中,似乎不可能在a=b上加入(如果a和b为null)。我想我知道怎么解决这个问题。不过我无法证实。相反,COALESCE(a,'value')=COALESCE(b,'value')上的连接没有DBMS将在null上连接。最好使用@Rabbit's
-条件,而不是
合并
,这将产生更好的性能。。。