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