SQL怎么提取字段中最大值

SQL怎么提取字段中最大值,第1张

1、既然被for xml path('')组合到一起了,那就想办法把这个字符串拆开;

2、可以创建一个Split这样的函数,来拆开这一列为一个表的形式;

3、然后,再查出这个表里的最大值即可

下面是Ufn_Split函数

create function [dbo][Ufn_Split](@Array varchar(max),@StrSeprate varchar(10))

returns @TokenVals table (fjj_id INT IDENTITY(1,1) ,strValue varchar(255))

as

begin

declare @strlen int, @curpos int, @val varchar(255), @nextcomma int

set @strlen = datalength(@Array)

set @curpos = 0

while @curpos <= @strlen

begin

set @nextcomma = charindex(@StrSeprate, @Array, @curpos)

if @nextcomma = 0

set @nextcomma = @strlen + 1

set @val = substring(@Array,@curpos,@nextcomma - @curpos)

insert @TokenVals values (rtrim(ltrim(@val)))

set @curpos = @nextcomma + 1

end

return

end

函数使用方法:

select  from dboUfn_Split('1+2+3+5+1','+') table1

假设你表中的DATA_TIME字段是日期类型,如果是字符类型,需要对下列语句做修改

SQL SERVER

SELECT CONVERT(CHAR(8),DATA_TIME,112) 日期,MAX(DATA_DATA)

FROM TABLE_NAME

GROUP BY CONVERT(CHAR(8),DATA_TIME,112)

ORDER BY 1

ORACLE

SELECT TRUNC(DATA_TIME) 日期,MAX(DATA_DATA)

FROM TABLE_NAME

GROUP BY TRUNC(DATA_TIME)

ORDER BY 1

;

按照你的要求的话是不是要保留每条记录,然后每条记录再显示出当日的最大值?

如果是这样,SQL SERVER中需要原表和每日的最大值的嵌套表做关联;ORACLE用分析函数,下面是ORACLE的语句

SELECT TO_CHAR(DATA_TIME,'YYYY-MM-DD HH24:MI:SS') 时间,

DATA_DATA "当前值",

MAX(DATA_DATA) OVER(PARTITION BY TRUNC(DATA_TIME))"当日最大值"

FROM TABLE_NAME

ORDER BY 1;

字符的最大值:

字符型数据的比较是按首字符进行比较的z>a>9>0>空格>''>null,首位同再往下依次比较。

数值的最大值就没什么可说的了,略。

所以如题,就需要将字符先转换为数值型,再比较,才能得到你要的结果,不然的话,会出现9>10的情况,因为是按照字符来进行比较的。

如果皆为整数:

select max(cast(字段 as int)) from 表

数字较大的就用bigint

如果带小数的就看最长的小数位有多少,比如4,则:

select max(cast(字段 as decimal(20,4))) from 表

一、字符串为数值,可以直接使用 cast 把列转换成数值型,然后用max()取最大即可:

如:select max(cast(字段 as integer))

二、字符中间包含数字,如 137465、5453728,最大为7,8,可以使用CHARINDEX ( )函数来判断

如:

三、指定位置的数字,如 abc02,a2u07,最大数字为07或7,可以使用right或left截取数字,再使用max()

如:select max(right(字段,2))

当然还有其他方式的数字比较,基本思路相同,先定位数字的位置,或截取数字,在进行比较。

select max(t) as 温度最大值,min(t) as 温度最小值,max(p) as 湿度最大值,min(p) as 湿度最小值,max(datetime) as 最后出现时间,min(datetime) as 最早出现时间 from yourtable_name

你连接的是SQL还是Oracle数据库?

你对数据库 *** 作这块不是很熟悉,我建议你去网上搜搜,自己学一下,一会就能学会。

给你一个例子,

首先要添加一个引用

using

SystemDataSqlClient;(SQL数据库)

using

systemdataoracleClient;(Oracle数据库)

然后可以 *** 作了

一个SQL数据库的小例子

DataSet

ds

=

new

DataSet();

string

mSql="SELECT

MAX(QuestionID)

FROM

table_name";//引用1楼的代码

string

ConStr

=

"server=;database=你要连接的数据库;user

id=数据库用户名;password=密码";

SqlConnection

conn

=

new

SqlConnection(ConStr);

connOpen();

try

{

SqlDataAdapter

adapter

=

new

SqlDataAdapter(mSql,

conn);

//数据填写在ds中

adapterFill(ds,

"table_name");

}

catch

{

}

finally

{

//勿忘关闭库连接

connClose();

}

以上就是关于SQL怎么提取字段中最大值全部的内容,包括:SQL怎么提取字段中最大值、sql语句查询每日数据中的最大值、怎样用SQL语句查找出字符型字段内的最大值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9331254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存