各位大虾,这个SQL是不是能写不出来,555... 加50分提上来再问?(100分)

  • 主题发起人 主题发起人 zyycc
  • 开始时间 开始时间
Z

zyycc

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样一个表
recno 货品号 柜台号 销售员号 日期 卖价
1 001 0A S02 01/01 5
3 001 0B S01 01/01 4
4 001 0A S03 01/02 3
5 002 0C S01 01/01 5
7 002 0B S02 01/05 7
8 003 0D S03 01/02 9
9 003 0C S02 01/04 6

我希望的结果为:
recno 货品号 柜台号 销售员号 日期 卖价
1 001 0A S02 01/01 5
7 002 0B S02 01/05 7
8 003 0D S03 01/02 9

即要找出每种货品卖价最高的那条记录,(若有重复,任选一条)
各位大虾,请问如何写?谢谢!(俺用MSSQL7.0)
 
难,还是自己写点代码吧。要不了多少,最好30行
 
好像这样可以
select max(卖价) from 表名;
 
如果货号按顺序的,可以 用循环呀
 
好像比较难,关注.
 
select * from 销售表 where (货品号+str(卖价)) in (SELECT 货品号+str(max(卖价)) from 销售表 group by 货品号)
EASY!
我试过了,好使,加分吧!
 
To:LSS
你的方法我已试过,当同一货品号有几条相同的最大卖价时,
这种方法会把它们都选出来,请再想想,谢谢!在这里,我也对其
他热心的朋友表示感谢!
 
在sql server2000上我测试没有重复的问题呀,

是不是因为sql server2000和sql server 7有不同呀
 
在sql server2000上我测试没有重复的问题呀,

是不是因为sql server2000和sql server 7有不同呀
 
Table name is Test1

select Test1.*
from (select max(recno) recno
from (SELECT 货品号, MAX(卖价) AS 卖价
FROM Test1
GROUP BY 货品号) Test2, Test1
where Test1.货品号 = Test2.货品号 and
Test1.卖价 = Test2.卖价
group by Test1.货品号) Test2, Test1
where Test1.recno = Test2.recno
 
CREATE PROCEDURE RetMaxList AS
Set NoCount On
Declare @id1 char(10)--商品代码
Declare @jg float --价格
--Table1为商品销售库,id1为商品代码,jg为售价
Declare GroupTmp cursor for select id1,max(jg) from table1 group by id1
--建立临时空表#TableTmp
select * into #TableTmp from Table1 where 1=0
OPEN GroupTmp
FETCH NEXT FROM GroupTmp INTO @id1,@jg
WHILE @@FETCH_STATUS = 0 BEGIN
insert into #tabletmp select top 1 * from table1 where (id1=@id1)and(jg=@jg)
FETCH NEXT FROM GroupTmp INTO @id1,@jg
END
CLOSE GroupTmp
DEALLOCATE GroupTmp
Select * from #tabletmp
Drop table #Tabletmp

 
要用不重复的记录用distinct 关键字好象就可以了。
select distinct 货品号,recno,柜台号销售员号,日期,max(卖价) from 表名 ;
 
多人接受答案了。
 
根据Delphiwolf LSS...大家给我的启发,我也写了一个Select-SQL
效率高,从七十万条记录中选出结果要36秒,拿出来分享一下。
select * from test1 where recno in
(select recno from (select 货品号,max(卖价) as 卖价,
max(recno) as recno from test1
group by 货品号)t2 )
order by 货品号
 
to zyycc:
你的语句是错的!!!
 
小人冤枉啊!
小人刚才在上班的环境下还试了一下,共需时 4'23'',tmd,是否服务器太差了!
原句如下(俺用的是MSSQL7.0)
select * from icjrnl where recnum in
(select recnum from (select item_no,max(move_date) as move_date,max(recnum) as recnum from icjrnl

group by item_no)t2 )
order by item_no
 
我是说你的SQL语句就是错的!!!
 
To: delphiwolf
还望您能解释一下,谢谢啦!
 
还要怎么解释,你自己看一看你select出来的结果集能和表里的数据对应吗?
 
后退
顶部