互联网服务

问世间,谁是SQL高手?(已解决,结贴)

有这样一个表:

SIDFY Type Series No Version
154762012 A 1 1
154762012 A 2 1
154762012 A 2 2
154762012 A 3 1
158002012 A 1 1
158002012 A 2 1
158002012 A 2 2
158002012 A 3 1


用一条SQL 语句,按SID,FY,Type查找出Series No和Version最大的那些记录。

也就是说,要找出下面这样的结果记录:
SIDFYType Series No Version
154762012 A 3 1
158002012 A 3 1


不能找出 象15476,2012,A,3,2这样的结果出来。

怎么写SQL语句????

SQL SERVER 里的
参与11

10同行回答

FIR1987FIR1987软件开发工程师ibm
回复 10# junix2008 这个访问了两次表 效率应该不如上面用olap函数的那个吧显示全部
回复 10# junix2008

这个访问了两次表 效率应该不如上面用olap函数的那个吧收起
互联网服务 · 2012-06-19
浏览999
junix2008junix2008项目经理耐普罗塑胶五金制品(深圳)有限公司
答案(供参考):SELECT *  FROM [dbo].[test]where [SID]+'#' +str([FY])+'#' +[appType]+'#' +str([Series_No])+'#' +str([Version])in (select max([SID]+'#' +str([FY])+'#' +[AppType]+'#' +str([Series_No])+'#' +str([Version]))FROM [dbo].[test] GROUp BY ...显示全部
答案(供参考):
SELECT *
  FROM [dbo].[test]
where [SID]+'#' +str([FY])+'#' +[appType]+'#' +str([Series_No])+'#' +str([Version])
in (select max([SID]+'#' +str([FY])+'#' +[AppType]+'#' +str([Series_No])+'#' +str([Version]))
FROM [dbo].[test] GROUp BY [FStaff_ID],[FApp_FY],[FApp_Type])收起
互联网服务 · 2012-06-18
浏览979
junix2008junix2008项目经理耐普罗塑胶五金制品(深圳)有限公司
select SID,FY,appType,Series_No,Version,appValue,rm from (select SID,FY,appType,Series_No,Version,a ...1234zhuxu 发表于 2012-6-18 15:36     这个正确。显示全部
select SID,FY,appType,Series_No,Version,appValue,rm from (
select SID,FY,appType,Series_No,Version,a ...
1234zhuxu 发表于 2012-6-18 15:36



    这个正确。收起
互联网服务 · 2012-06-18
浏览994
脚踏飞燕脚踏飞燕项目经理东虹桥金融在线(www.dhqjr.com)
select a.sid, a.fy, a.appType, max(b.series_no),max(b.verion),b.appvaluefrom(select *from test twhere verion=(select max(verion) from test where sid=t.sid) ) ainner join(select *from test twhere series_no=(select max(series_no) from test where sid=t....显示全部
select a.sid, a.fy, a.appType, max(b.series_no),max(b.verion),b.appvalue
from

(select *
from test t
where verion=(select max(verion) from test where sid=t.sid)
) a
inner join
(
select *
from test t
where series_no=(select max(series_no) from test where sid=t.sid)
) b
on a.sid=b.sid
group by a.sid,a.fy,a.appType,b.appValue


这效率坑爹  {:2_32:}收起
融资租赁 · 2012-06-18
浏览995
Cognos_菜Cognos_菜软件开发工程师高伟达软件股份有限公司
select SID,FY,appType,Series_No,max(Version),appValue from (select  SID,FY,appType,max(Series_No),Version,appValue from test_table group by SID,FY,appType,Version,appValue) B  group by SID,FY,appType,Series_No,appValue显示全部
select SID,FY,appType,Series_No,max(Version),appValue
from (
select  SID,FY,appType,max(Series_No),Version,appValue from test_table
group by SID,FY,appType,Version,appValue
) B  
group by SID,FY,appType,Series_No,appValue收起
互联网服务 · 2012-06-18
浏览974
1234zhuxu1234zhuxu软件开发工程师asiainfo-linkage
select SID,FY,appType,Series_No,Version,appValue,rm from (select SID,FY,appType,Series_No,Version,appValue,row_number() over(partition by SID,FY,appType order by Series_No desc,Version desc) rmfrom test_table)where rm=1显示全部
select SID,FY,appType,Series_No,Version,appValue,rm from (
select SID,FY,appType,Series_No,Version,appValue,
row_number() over(partition by SID,FY,appType order by Series_No desc,Version desc) rm
from test_table)
where rm=1收起
互联网服务 · 2012-06-18
浏览1016
wattswatts软件开发工程师德邦物流
回复 1# junix2008     用union 我在oracle下执行的语句,sql应该可以,但是数据量大性能可能不是特别好select a,b,c from twhere c=(select max(c) from t)union select a,b,d from twhere d=(select max(d) from t)显示全部
回复 1# junix2008


    用union
我在oracle下执行的语句,sql应该可以,但是数据量大性能可能不是特别好
select a,b,c from t
where c=(select max(c) from t)
union
select a,b,d from t
where d=(select max(d) from t)收起
互联网服务 · 2012-06-18
浏览1009
junix2008junix2008项目经理耐普罗塑胶五金制品(深圳)有限公司
执行下面的脚本就明白了:CREATE TABLE test_table SID varchar(50) NOT NULL, FY int NOT NULL, appType char(1) NOT NULL, Series_No int NOT NULL, Version int NOT NULL, appValue decimal(18, 3) NULL) ON [PRIMARY]insert into test_table(SID,FY,appType,Series_No...显示全部
执行下面的脚本就明白了:

CREATE TABLE test_table
SID varchar(50) NOT NULL,
FY int NOT NULL,
appType char(1) NOT NULL,
Series_No int NOT NULL,
Version int NOT NULL,
appValue decimal(18, 3) NULL
) ON [PRIMARY]
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15800', 2012, 'A', 1, 1, 72);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15800', 2012, 'A', 2, 1, 74);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15800', 2012, 'A', 2, 2, 83);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15800', 2012, 'A', 3, 1, 65);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15476', 2012, 'A', 1, 1, 46);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15476', 2012, 'A', 2, 1, 76);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15476', 2012, 'A', 2, 2, 68);
insert into test_table(SID,FY,appType,Series_No,Version,appValue)
values('15476', 2012, 'A', 3, 1, 83);

/*我要的结果
'15800', 2012, 'A', 3, 1, 65
'15476', 2012, 'A', 3, 1, 83
*/收起
互联网服务 · 2012-06-18
浏览1041
tiandehuitiandehui软件开发工程师四川启明星银海科技有限公司
我没看明白题意...显示全部
我没看明白题意...收起
政府机关 · 2012-06-18
浏览1013
junix2008junix2008项目经理耐普罗塑胶五金制品(深圳)有限公司
我是要找出同SID下的:(1)如果相同series no,就取最大Version那一行(2)在最大series no的行中取version最大的记录显示全部
我是要找出同SID下的:(1)如果相同series no,就取最大Version那一行
(2)在最大series no的行中取version最大的记录收起
互联网服务 · 2012-06-18
浏览986

提问者

junix2008
项目经理耐普罗塑胶五金制品(深圳)有限公司
擅长领域: 大数据商业智能数据库

问题状态

  • 发布时间:2012-06-18
  • 关注会员:1 人
  • 问题浏览:4925
  • 最近回答:2012-06-19
  • X社区推广