首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一算法解决思路

2011-12-26 
求一算法表结构和数据如下:星期ID,星期一,星期二,星期三,星期四,星期五1,1,2,3,4,52,3,1,10,3,63,。。。。。。想

求一算法
表结构和数据如下:
星期ID,星期一,星期二,星期三,星期四,星期五
          1,         1,           2,           3,           4,           5
          2,         3,           1,         10,           3,           6
          3,。。。。。。

想找出四周内最大的三个值,sql怎么写?

[解决办法]
select top 3 * from
(
select * from
(
select 星期ID , 星期一 as value
union all
select 星期ID , 星期二 as value
union all
select 星期ID , 星期三 as value
union all
select 星期ID , 星期四 as value
union all
select 星期ID , 星期五 as value
) t
order by value desc
) m

[解决办法]
select top 3 * from
(
select * from
(
select 星期ID , 星期一 as value
union all
select 星期ID , 星期二 as value
union all
select 星期ID , 星期三 as value
union all
select 星期ID , 星期四 as value
union all
select 星期ID , 星期五 as value
) t where BETWEEN(1 and 4)
order by desc
) m

[解决办法]
select top 3 * from
(
select 星期ID , 星期一 as value from 表
union all
select 星期ID , 星期二 as value from 表
union all
select 星期ID , 星期三 as value from 表
union all
select 星期ID , 星期四 as value from 表
union all
select 星期ID , 星期五 as value from 表
) t
order by value desc

[解决办法]
set rowcount 3

select * from
(
select 星期ID , 星期一 as value
union all
select 星期ID , 星期二 as value
union all
select 星期ID , 星期三 as value
union all
select 星期ID , 星期四 as value
union all
select 星期ID , 星期五 as value
) t
order by value desc
set rowcount 0

[解决办法]

create table T(星期ID int,星期一 int, 星期二 int,星期三 int,星期四 int,星期五 int)
insert T select 1,1,2,3,4,5
union all select 2,3,1,10,3,6
union all select 3,1,12,13,5,8
union all select 4,5,4,14,3,6
union all select 5,100,120,1,50,60

select top 3 值=星期一 from
(
select 星期ID, 星期一 from T
union all
select 星期ID, 星期二 from T
union all
select 星期ID, 星期三 from T
union all
select 星期ID, 星期四 from T
union all
select 星期ID, 星期五 from T
)tmp where 星期ID <5
order by 星期一 desc

--result

-----------
14
13
12

(3 row(s) affected)

热点排行