微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

表格的最大值

如何解决表格的最大值

我正在寻找一个sql Server查询,该查询返回仅包含int(或floats)的表的最大值:

create table tab 
(
    temp1 int,temp2 int,temp3 int,temp4 int
)

insert into tab 
values (1,2,3,4),(5,6,7,8),(9,10,11,12)

我想退回12

有可能以简单的方式吗?

解决方法

在SQL Server中,最简单的方法可能是先使用侧向联接取消透视,然后再进行top()

select top (1) val
from tab
cross apply (values (temp1),(temp2),(temp3),(temp4)) x(val)
order by val desc

或者使用聚合而不是排序:

select max(val) val
from tab
cross apply (values (temp1),(temp4)) x(val)
,
--fixed number of cols: temp1-4
select max(unp.theint)
from tab as t
unpivot 
(
theint FOR thecol IN ( temp1,temp2,temp3,temp4)
) as unp;


--any number of cols
alter table tab add col1 int default(10) with values;
alter table tab add colx int default(100) with values;

select max(theint)
from
(
select (select t.* for xml path(''),type).query('max(/*)').value('.','int') as theint
from tab as t
) as src;
,

您必须使用此代码段

SELECT MAX(TEMP) AS MAXTEMP
FROM DBO.TAB
UNPIVOT ( TEMP FOR TEMPVal IN ( TEMP1,TEMP2,TEMP3,TEMP4) ) AS u
,

没有简单的方法。通过使用动态SQL是。这种针对表的设计违反了规范化规则,这是导致编写简单有效查询的能力差的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。