如何用SQL语句比较多个字段的大小?

时间:2022-02-15 15:00:02
有一个叫Y的表格,有如下的字段:

代码;
Y2013;
Y2012;
...
Y2007;
最大值;
最小值;
平均值;

现在要求比较Y2007-Y2013这几个字段,然后计算出其最大值,最小值和平均值,然后更新到相应的字段中,这个SQL应该怎么写?请高手们指教呀。

9 个解决方案

#1


最大值=
max
(
Y2007
Y2013
),
最小值=
min
(
Y2007
Y2013
)

按照楼主的问题,我只能这么回答了。

#2


这样得不出结果啊,我是想问SQL语句该怎么写?

#3


select max(列名) as 最大值,min(列名) as 最小值,avg(列名) as 平均值
from Y

“列名”包含Y2013;
Y2012;
...
Y2007;内容

#4


先问清楚问题:
问题1:你这个是access吗?
问题2:每个列是否先要计算出最大最小平均然后再和其他列对比?得出哪个列?

#5


回复版主DBA_Huangzj:
问题1:是access
问题2:不需要对比,各列的关系如下:
最大值=MAX(Y2007,Y2008,...Y2013);
最小值=MIN(Y2007,Y2008,...Y2013);
平均值=AVG(Y2007,Y2008,...Y2013);

就是说每一行中的最大值、最小值和平均值分别是该行中Y2007~Y2013这几个列的最大值,最小值和平均值


引用 4 楼 DBA_Huangzj 的回复:
先问清楚问题:
问题1:你这个是access吗?
问题2:每个列是否先要计算出最大最小平均然后再和其他列对比?得出哪个列?

#6


1、access有专门的语法,和t-sql有一定程度的不兼容,所以最好去数据库开发→其他数据库 那个专区的access专区去问,不然用T-SQL写了access用不到就大家都没意思了。
2、你这个问题,就我的水平来说,我会用列转行,然后再用max、min、avg函数来取,再行转列。

#7


没想到这个问题这么复杂啊?我原来以为有内置函数能解决呢。怪不得access版里等了半天都没人回答了,晕。

实际上平均值那一列是好算的,就是:
平均值=(Y2007+Y2008+...+Y2013)/7
但是最大值,最小值那两列,如果用IIF函数判断来算的话,就要写很多,很复杂了,所以我才想问一下高手们有没有内置的函数或简单的方法可行。


引用 6 楼 DBA_Huangzj 的回复:
1、access有专门的语法,和t-sql有一定程度的不兼容,所以最好去数据库开发→其他数据库 那个专区的access专区去问,不然用T-SQL写了access用不到就大家都没意思了。
2、你这个问题,就我的水平来说,我会用列转行,然后再用max、min、avg函数来取,再行转列。

#8


http://bbs.csdn.net/topics/390581734
求解。。

#9


楼主,最后如何解决的?

#1


最大值=
max
(
Y2007
Y2013
),
最小值=
min
(
Y2007
Y2013
)

按照楼主的问题,我只能这么回答了。

#2


这样得不出结果啊,我是想问SQL语句该怎么写?

#3


select max(列名) as 最大值,min(列名) as 最小值,avg(列名) as 平均值
from Y

“列名”包含Y2013;
Y2012;
...
Y2007;内容

#4


先问清楚问题:
问题1:你这个是access吗?
问题2:每个列是否先要计算出最大最小平均然后再和其他列对比?得出哪个列?

#5


回复版主DBA_Huangzj:
问题1:是access
问题2:不需要对比,各列的关系如下:
最大值=MAX(Y2007,Y2008,...Y2013);
最小值=MIN(Y2007,Y2008,...Y2013);
平均值=AVG(Y2007,Y2008,...Y2013);

就是说每一行中的最大值、最小值和平均值分别是该行中Y2007~Y2013这几个列的最大值,最小值和平均值


引用 4 楼 DBA_Huangzj 的回复:
先问清楚问题:
问题1:你这个是access吗?
问题2:每个列是否先要计算出最大最小平均然后再和其他列对比?得出哪个列?

#6


1、access有专门的语法,和t-sql有一定程度的不兼容,所以最好去数据库开发→其他数据库 那个专区的access专区去问,不然用T-SQL写了access用不到就大家都没意思了。
2、你这个问题,就我的水平来说,我会用列转行,然后再用max、min、avg函数来取,再行转列。

#7


没想到这个问题这么复杂啊?我原来以为有内置函数能解决呢。怪不得access版里等了半天都没人回答了,晕。

实际上平均值那一列是好算的,就是:
平均值=(Y2007+Y2008+...+Y2013)/7
但是最大值,最小值那两列,如果用IIF函数判断来算的话,就要写很多,很复杂了,所以我才想问一下高手们有没有内置的函数或简单的方法可行。


引用 6 楼 DBA_Huangzj 的回复:
1、access有专门的语法,和t-sql有一定程度的不兼容,所以最好去数据库开发→其他数据库 那个专区的access专区去问,不然用T-SQL写了access用不到就大家都没意思了。
2、你这个问题,就我的水平来说,我会用列转行,然后再用max、min、avg函数来取,再行转列。

#8


http://bbs.csdn.net/topics/390581734
求解。。

#9


楼主,最后如何解决的?