科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道确定几个SQL Server栏中的最大值(2)

确定几个SQL Server栏中的最大值(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

你有一个里面包含整数、浮点数、金额或日期的N列SQL Server表,而你的任务是返回这些列中某一行的最大值。你甚至被要求一次求几行的最大值,返回一个记录组(record set)。 W/~,lDD

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年8月28日

关键字: 最大值 SQL Server SQL Server 各版本 数据库

  • 评论
  • 分享微博
  • 分享邮件

对于简单Min()和Max()函数的作用,SQL有它自己的规定,即比较一个列中的值。既然没有内置函数来比较任何两个值并确定最大或最小值,你应该自行编写这种函数。我决定把它们叫做Min2()和Max2()。见列表A。 5x n /  
9+ 5QS  
你可以用这个代码对它们进行测试: 9(P"A~BUi  
JE@^3  
SELECT dbo.Min2( 23, 34 ) YV%{hnr  
K!:5\G9  
SELECT dbo.Max2( 23,NULL) !P?-HO  
fT1+&Br  
SELECT dbo.Min2( NULL, 34 ) G?b5Ecc7P  
\QX-tT3^C  
SELECT dbo.Max2( 23,NULL) KBUJF@ :  
$FCC:(i  
要比较原始表中的值,你可以简单地嵌入函数调用,就像这样: SF 2xSd  
(O^mM+u"  
SELECT dbo.Max2( Value1, dbo.Max2( Value2, dbo.Max2( Value3, Value4 ) ) ) XJ8d8T4m  
5<D8WtJ7  
FROM dbo.MinMax C3Mpr^=v7j  
,T?PG<j  
根据原始表,这个调用的结果如下: '{G` H0U@E  
>nj%K%<O  
7 sU'`=jIJ  
t*51W,<h0  
10 ]>*kFFpas  
dApgzU@;  
27 jdvybE&#Y  
Y~q~sT  
81 D xbX  
TEAzg  
还是有一个问题:上面的代码把NULL转换成0。在Min2()函数中,这意味着如果有自变量为NULL值,则返回结果为0。在多数情况下,我认为这样做是恰当的,但在一些特殊情况下,你可能希望返回NULL而不是0。 9 Y/o  
r)K\)FOM'i  
你可能已经编写了一个刚好只接受四个参数的函数,但这样的函数过于特殊,不能在其它情况下使用。花一点时间考虑更普遍的情况,你将会得到更加有用的函数。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章