求两列中的最大值

KYOWA 2009-08-29 11:47:52
现有一表,其中有两列放置流水号,如
startnum endnum
1 100
101
102
103 555


请问如何求出此最大值?
谢谢
...全文
99 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
guguda2008 2009-08-29
  • 打赏
  • 举报
回复
正解正解,ISNULL+UNION ALL+MAX=正解
黄_瓜 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fredrickhu 的回复:]
SQL code--自己选择
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2009-08-29 12:01:56
-- Verstion:
-- Microsoft SQL Server 2005 - 9.00.4¡­
[/Quote]
楼主看这个
sadson 2009-08-29
  • 打赏
  • 举报
回复

select (case when a >= b then a else b end) as maxnum
from (
select max(startnum) a, max(endnum) b
from tb
) c


如果有三列、四列可以用unpivot把每项max转成纵表,这样tb只会被扫描一次

select max(p) as maxnum
from (
select max(col1) a, max(col2) b, max(col3) c
from tb
) t1
unpivot (
p for i in ([a],[b],[c])
) as t2
htl258_Tony 2009-08-29
  • 打赏
  • 举报
回复
select 
max(num) as maxmun
from(
select startnum as num from tb
union all
select isnull(endnum,0) from tb
) as t
应该要考虑结束编号的空值。
duanzhi1984 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kyowa 的回复:]
引用 6 楼 fredrickhu 的回复:
SQL code--树哥的selectmax(num)as maxmunfrom
(select startnumas numfrom tbunionallselect endnumas numfrom tb
) t


谢谢,这样速度是很快的吧
[/Quote]
这个方法是可以的!
--小F-- 2009-08-29
  • 打赏
  • 举报
回复
--自己选择 
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2009-08-29 12:01:56
-- Verstion:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([startnum] int,[endnum] int)
insert [tb]
select 1,100 union all
select 101,null union all
select 102,null union all
select 103,555
--------------开始查询--------------------------
1.select
max(num) as maxmun
from
(
select startnum as num from tb
union all
select endnum as num from tb
) t

2.select
max(startnum) as maxstartnum,
max(endnum) as maxendnum
from
tb
----------------结果----------------------------
/* maxmun
-----------
555
警告: 聚合或其他 SET 操作消除了空值。

(1 行受影响)

maxstartnum maxendnum
----------- -----------
103 555
警告: 聚合或其他 SET 操作消除了空值。

(1 行受影响)
*/
KYOWA 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fredrickhu 的回复:]
SQL code--树哥的selectmax(num)as maxmunfrom
(select startnumas numfrom tbunionallselect endnumas numfrom tb
) t
[/Quote]

谢谢,这样速度是很快的吧
--小F-- 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 josy 的回复:]
引用 5 楼 kyowa 的回复:
就是在startnum和endnumber中的最大值.


SQL codeselectmax(startnum)as maxstartnum,max(endnumber)as maxendnumfrom
tb
这样?
[/Quote]

...MAYBE
百年树人 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kyowa 的回复:]
就是在startnum和endnumber中的最大值.
[/Quote]

select 
max(startnum) as maxstartnum,
max(endnumber) as maxendnum
from
tb

这样?
--小F-- 2009-08-29
  • 打赏
  • 举报
回复
--树哥的
select
max(num) as maxmun
from
(
select startnum as num from tb
union all
select endnum as num from tb
) t
KYOWA 2009-08-29
  • 打赏
  • 举报
回复
就是在startnum和endnumber中的最大值.
百年树人 2009-08-29
  • 打赏
  • 举报
回复
select 
mx(num) as maxmun
from
(
select startnum as num from tb
union all
select endnum from tb
) t
--小F-- 2009-08-29
  • 打赏
  • 举报
回复
求哪个最大值?
gw6328 2009-08-29
  • 打赏
  • 举报
回复
什么最大的哦?
max(end)
max(sart)
ws_hgo 2009-08-29
  • 打赏
  • 举报
回复
select max(endnum) from biao
victorcai2006 2009-08-29
  • 打赏
  • 举报
回复
LZ要表达的意思没有看明白

6楼的应该能够满足楼主的需求了
[Quote=引用 6 楼 fredrickhu 的回复:]
SQL code--树哥的selectmax(num)as maxmunfrom
(select startnumas numfrom tbunionallselect endnumas numfrom tb
) t
[/Quote]

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧