首页 新闻 会员 周边

select 条件查询疑难

0
悬赏园豆:40 [已解决问题] 解决于 2013-10-25 14:12

有个表

A   B  C

一  1  ni

一  2  wo

二  3  ta

二  4  shui

有这么几个条件

一 A列值相同

二 在条件一的情况下根据B列最大的值取C列的值

详细点说就是,上表应该取到wo,shui两个值,因为在A列同个“一”值里,B列的“2”值最大,所以取C列的"wo", 另外个"shui"值也是一样。

可是,我不知道怎么去实现。

有没有大神可以解答下?

问题补充:

根据你们的提点,可以实现 了,但又出现了新的问题。
SELECT youshiSz FROM (
SELECT xiaobanID,jixuJ,youshiSz,rownum=ROW_NUMBER() OVER(PARTITION BY xiaobanID ORDER BY jixuJ DESC) FROM Resources_XiBan)
t WHERE t.rownum=1 ORDER BY xiaobanID

这个能得到一列值。
那我怎么将这个语句放到一个select a,b,c from ttt 的语句里面呢?(这个语句得到的值和上面语句得到的值数量相同)
我用了union什么的,都不行。
或者直接
select a,b,c,
(SELECT youshiSz FROM (
SELECT xiaobanID,jixuJ,youshiSz,rownum=ROW_NUMBER() OVER(PARTITION BY xiaobanID ORDER BY jixuJ DESC) FROM Resources_XiBan)
t WHERE t.rownum=1 ORDER BY xiaobanID) as d
 from ttt
也不行。。

张孤山的主页 张孤山 | 初学一级 | 园豆:14
提问于:2013-10-24 19:33
< >
分享
最佳答案
0

可以尝试下另外的解法:

--构造测试数据
CREATE TABLE #t(A VARCHAR(50),B INT ,C VARCHAR(50))
INSERT INTO #t
SELECT '',1,'ni'
UNION 
SELECT '',2,'wo'
UNION 
SELECT '',3,'ta'
UNION
SELECT '',4,'shui'

--查询结果。
SELECT * FROM (
SELECT *,rownum=ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) FROM #t)
t WHERE t.rownum=1 ORDER BY A desc
收获园豆:35
幻天芒 | 高人七级 |园豆:37175 | 2013-10-24 23:58
其他回答(2)
0

给你的表起个名称Student,据观察B列应该为主键。代码如下:

select a.A,a.B,a.C from dbo.Student a
inner join( select A,max(B)as B from dbo.Student group by A) b on a.B= b.B

实现效果如下:

(以上是SQL语法,Oracle语法类似)

收获园豆:5
明志德道 | 园豆:207 (菜鸟二级) | 2013-10-24 20:55
0

(⊙v⊙)嗯,楼上的办法很赞

jone_e | 园豆:1410 (小虾三级) | 2013-10-25 10:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册