在一个SQL Server表中一行的多个列找出最大值

摘要:
有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示这里给出一个例子IF(OBJECT_ID('tempdb..##TestTable')ISNOTNULL)DROPTABLE##TestTableCREATETABLE##TestTable(IDINTIDENTITY(1,1)PRIMARYKEY,NameNVARCHAR(40),UpdateByApp1DateDAT

有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示

这里给出一个例子

IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL)

DROP TABLE ##TestTable

CREATE TABLE ##TestTable

(

ID INT IDENTITY(1,1) PRIMARY KEY,

Name NVARCHAR(40),

UpdateByApp1Date DATETIME,

UpdateByApp2Date DATETIME,

UpdateByApp3Date DATETIME

)

INSERT INTO ##TestTable(Name, UpdateByApp1Date, UpdateByApp2Date, UpdateByApp3Date )

VALUES('ABC', '2015-08-05','2015-08-04', '2015-08-06'),

('NewCopmany', '2014-07-05','2012-12-09', '2015-08-14'),

('MyCompany', '2015-03-05','2015-01-14', '2015-07-26')

SELECT * FROM ##TestTable

在一个SQL Server表中一行的多个列找出最大值第1张

结果如下所示

在一个SQL Server表中一行的多个列找出最大值第2张

有三种方法可以实现

方法一

SELECT ID ,

Name ,

( SELECT MAX(LastUpdateDate)

FROM ( VALUES ( UpdateByApp1Date), ( UpdateByApp2Date),

( UpdateByApp3Date) ) AS UpdateDate ( LastUpdateDate )

) AS LastUpdateDate

FROM ##TestTable

方法二

SELECT ID ,

[Name] ,

MAX(UpdateDate) AS LastUpdateDate

FROM ##TestTable UNPIVOT ( UpdateDate FOR DateVal IN

( UpdateByApp1Date,UpdateByApp2Date,UpdateByApp3Date ) ) AS u

GROUP BY ID , Name

方法三

SELECT ID ,

name ,

( SELECT MAX(UpdateDate) AS LastUpdateDate

FROM ( SELECT tt.UpdateByApp1Date AS UpdateDate

UNION

SELECT tt.UpdateByApp2Date

UNION

SELECT tt.UpdateByApp3Date

) ud

) LastUpdateDate

FROM ##TestTable tt

免责声明:文章转载自《在一个SQL Server表中一行的多个列找出最大值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VMWare虚拟机网络的三种工作模式SharePoint Server 2013开发之旅(三):为SharePoint Server配置App开发、部署、管理环境下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle EBS:追踪PO全过程

1.创建POPO_HEADERS_ALLselect po_header_id from po_headers_all where segment1 =;select * from po_headers_all where po_header_id =; po_lines_allselect * from po_lines_all where po_he...

B14-iOS开发中的几种存储方式

一、NSUserDefault(偏好设置,Preference) 小规模数据,弱业务相关数据使用。例:某个UISwitch的状态。 二、File(文件存储) 文件存储包括了Plist、archive、Stream等方式,一般结构化的数据或者需要方便查询的数据,都会以Plist的方式去持久化。 Archive方式适合存储平时不太经常使用但很大量的数据,或者读...

Mybatis中 ResultMap的collection配置一对多使用详解

resultMap可以将查询到的多种数据,映射到一个符合要求的对象上。   1.实现操作的基本流程     调用Mapper接口的方法→→Mapper.xml文件中对应id的查询语句(接口的方法名=查询语句的id)→查询语句配置resultMap属性(属性值是其对应ResultMap标签的id)→在resultMap标签中,配置查到的表的字段与对象的属性的...

展开BOM并使用最终用量的算法(转载)

本文系转载子ITPUB,如果有侵犯您权益的地方,烦请及时的告知与我,我即刻将停止侵权行为: 网址:http://www.itpub.net/thread-1020586-1-1.html http://www.itpub.net/thread-1020772-3-1.html http://www.itpub.net/thread-1020712-1-1....

013.PGSQL-查看sql正在运行的进程、查看表是否被锁、解锁表

1.PGSQL-查看sql正在运行的进程 SELECT datname,pid,state,query FROM pg_stat_activity where state='active' SELECTprocpid, START, now() - START ASlap, current_query FROM( S...

mybatis中@Param用法

用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中  我们先来看Mapper接口中的@Select方法 package Mapper; public interface Mapper { @Select("select s_id id,s_name n...