如何确定 SQL 列中的最大值
表 [dbo].[](
[] [int] (1,1) NOT NULL,
[] [整数] 空,
[] [整数] 空,
[] [整数] 空,
[] [整数] 空,
[] 钥匙
[]ASC
)WITH (= OFF, = OFF) ON []
) 在 []
请注意,表定义允许在其四列中使用 NULL 值。 在大多数情况下,我会尝试应用非 NULL 列,但在这种情况下,一个或多个日期列很可能包含 NULL 值; 我当然不想只是为了逃避非NULL问题而输入错误的数据。 所以我将所有日期列定义为 NULL 列。 图 1 给出了一些可以插入表中的示例值。
对于简单的 Min() 和 Max() 函数的作用,SQL 有自己的规则,即比较列中的值。 由于没有内置函数来比较任意两个值并确定最大值或最小值,因此您应该自己编写这样的函数。 我决定将它们称为 Min2() 和 Max2()。 参见列表 A。
您可以使用以下代码测试它们:
dbo.Min2(23, 34)
dbo.Max2(23,NULL)
dbo.Min2(NULL, 34)
dbo.Max2(23,NULL)
要比较原始表中的值,您可以简单地嵌入函数调用,如下所示:
dbo.Max2( , dbo.Max2( , dbo.Max2( , ) ) )
来自 dbo。
根据原表,本次调用的结果如下:
10
27
81
还有一个问题:上面的代码将 NULL 转换为 0。在 Min2() 函数中,这意味着如果任何参数为 NULL,则结果为 0。大多数情况下我认为这是合适的,但在某些特殊情况下你可能想返回 NULL 而不是 0。
您可能编写了一个仅接受四个参数的函数,但这样的函数过于专业化,无法在其他情况下使用。 花点时间考虑更一般的情况,您将获得更多有用的函数。