星空网 > 软件开发 > 数据库

求多个列的最大值/最小值

数据库环境:SQL SERVER 2008R2 

  如题,现有数据如图1,要求求出每行相同数据类型的最大值/最小值。即图2的效果。

求多个列的最大值/最小值      求多个列的最大值/最小值

  Oracle里有专门的greatest()、least()函数求多个列的最大、最小值,但是,在Sql Server里,

还没有对应实现的函数。我想到的方法是通过想列转行、行转列实现。

1.数据准备

求多个列的最大值/最小值求多个列的最大值/最小值
WITH  x0     AS ( SELECT  1 AS id ,            3 AS c1 ,            4 AS c2 ,            0 AS c3 ,            5 AS c4 ,            2 AS c5        UNION ALL        SELECT  2 AS id ,            2 AS c1 ,            3 AS c2 ,            1 AS c3 ,            6 AS c4 ,            4 AS c5        UNION ALL        SELECT  3 AS id ,            6 AS c1 ,            4 AS c2 ,            11 AS c3 ,            2 AS c4 ,            9 AS c5       )

View Code

2.列转行

求多个列的最大值/最小值求多个列的最大值/最小值
, x1     AS ( SELECT  *        FROM   x0 UNPIVOT( c FOR attr IN ( c1, c2, c3, c4, c5 ) ) t       )

View Code

3.union all合并每行的最大、最小值

求多个列的最大值/最小值求多个列的最大值/最小值
,x2     AS ( SELECT  id ,            attr ,            c        FROM   x1        UNION ALL        SELECT  id ,            'c6' AS attr ,            MAX(c)        FROM   x1        GROUP BY id        UNION ALL        SELECT  id ,            'c7' AS attr ,            MIN(c)        FROM   x1        GROUP BY id       )

View Code

4.行转列实现最终结果

求多个列的最大值/最小值求多个列的最大值/最小值
 SELECT id ,      c1 ,      c2 ,      c3 ,      c4 ,      c5 ,      c6 AS c_max ,      c7 AS c_min  FROM  ( SELECT  *       FROM   x2      ) AS t1 PIVOT( MAX(c) FOR attr IN ( c1, c2, c3, c4, c5, c6, c7 ) ) t2

View Code

  SQL脚本是合在一起执行的,这里为了说明思路,把SQL拆开讲了。

当然,实现该功能的方法不止这一种,具体可以参看这篇文章 http://blog.csdn.net/wufeng4552/article/details/4681510/。

 




原标题:求多个列的最大值/最小值

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

美国正在上演一场由中国品牌引发的跨境之战,快来看看!:https://www.kjdsnews.com/a/1547692.html
抖音10大热门变现项目:https://www.kjdsnews.com/a/1548691.html
迪卡侬怎么在小红书上做爆款?:https://www.kjdsnews.com/a/1548692.html
B站品牌用户分析:https://www.kjdsnews.com/a/1548693.html
解锁新蓝海!Mercado Libre美客多新手卖家该如何选择账号,抢占市场?:https://www.kjdsnews.com/a/1548694.html
独立站优秀案例分析:箱包DTC品牌Monos是如何实现逆风翻盘的?:https://www.kjdsnews.com/a/1548695.html
Twitter和Meta的付费认证服务值得购买吗?:https://www.kjdsnews.com/a/1836404.html
零售晚报:携程发布318成绩单 近800万商家GMV增长101% :https://www.kjdsnews.com/a/1836405.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流