当b可以为null时,SQL查找两个日期时间值a,b的最小值

罗伯·B

我在Transact SQL查询中写一个表达式,以查找每个记录的最少两个日期时间a,b,其中a不能为null,但b可以为null(在这种情况下返回a)。

我有以下内容,我认为是正确的,甚至可能是有效的,但肯定很难看。

我们可以做得更好吗?

case when b is null then a else (case when b < a then b else a end) end as min_datetime
戈登·利诺夫

在SQL Server中,您可以使用横向联接来执行此操作。正确的语法是:

select t.*, v.min_dte
from t cross apply
     (select min(v.dte) as min_dte
      from values ( (t.a), (t.b) ) v(dte)
     ) v;

随着值的数量变大,这非常方便。但是,性能可能会比单个表达式稍差(但不会差很多)。

至于单个表达式,我将寻求:

case when b is null or a < b then a else b end as min_datetime

其性能应基本上与您的表达相同。我觉得这个版本更简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找数组中两个最小值的索引

查找列表中的两个最小值

如何计算两个表的日期的最小值?

PostgreSQL-查找两个值相等,两个值都可以为NULL

如何使用熊猫查找两个日期之间的最小值并将其放入新列

在两个错误值的关联数组中查找最小值的键是相同的

当A上存在重复值时,如何在A列上查找分组数据的最小值,而在另一列B上查找最小值

查找不同行中的两个单元格中的最小值

如何查找特定列中是否有两个或更多个相等的最小值

查找两个numpy数组之间的绝对最小值,但保持符号

在另一列的两个条目之间查找一列的最小值

Python在具有两个条件的嵌套列表中查找最小值

如何在Postgres / SQL中获得两个整数的最小值/最大值?

在SQL中获取两个值中的最小值

两个表和重复组的SQL最小值最大值

查找矩阵中两个值之间的局部最小值和局部最大值

仅当ggplot中的值A大于值B时,才如何对两个时间序列之间的区域进行着色?

从两个列表创建字典,但保持最小值

在python中找到两个局部最小值

从 SQL 中的两个表中获取最小值?

使用SQL查找时间序列值的最大值和最小值

R查找两个事件之间的最后一个日期时间值

MySQL在两个(或多个)给定值中选择最小值/最大值

计算Less中两个值的最小值/最大值

在 SQL Server 中找到最低的两个最小值并找到两者之间的差异?

Excel Function / VBA根据日期时间和两个条件查找值

SQL使用第二个表中的最小值联接两个表

使用Java 8流计算两个值之间的差异并返回最小值

根据列的最小值选择两个列的值