有个表
A B C
一 1 ni
一 2 wo
二 3 ta
二 4 shui有这么几个条件
一 A列值相同
二 在条件一的情况下根据B列最大的值取C列的值
详细点说就是,上表应该取到wo,shui两个值,因为在A列同个“一”值里,B列的“2”值最大,所以取C列的"wo",
另外个"shui"值也是一样。
可是,我不知道怎么去实现。
有没有大神可以解答下?
select 条件判断
A B C
一 1 ni
一 2 wo
二 3 ta
二 4 shui有这么几个条件
一 A列值相同
二 在条件一的情况下根据B列最大的值取C列的值
详细点说就是,上表应该取到wo,shui两个值,因为在A列同个“一”值里,B列的“2”值最大,所以取C列的"wo",
另外个"shui"值也是一样。
可是,我不知道怎么去实现。
有没有大神可以解答下?
select 条件判断
解决方案 »
- 请教存储过程
- sql 生成报表问题
- 关于SQL2005远程访问的问题。
- 哪位大侠帮我解决一个问题?
- sqlserver2008 奇怪的问题请教
- 用户‘sa’登陆失败,原因是:未与信任SQL Server连接相关联。请教,这问题该如何解决?
- 如何把结果集插入到现有表中
- ▂▃▅▆█▓ 香港 大连 上海 ▂▃▅▆█▓ 三地数据库同步
- 怎么做才可以让sqlserver每天执行一个操作呢?
- 求写SQL:关于left join的(Access2000)
- 散发贴,一个关于IFNULL的用法问题
- 两千万条的数据, 我该怎么查询呢! 散分! 100%结贴。。### 2000W2000W2000W2000W2000W2000W2000W2000W
insert into #tb
select '一',1,'ni'
union all select '一',2,'wo'
union all select '二',3,'ta'
union all select '二',4,'shui'
select a.*
from #tb a
inner join (select A,max(B) as B from #tb group by A)b
on a.A=b.A and a.B=b.B
drop table #tb/*
一 2 wo
二 4 shui
*/
create table tb(a nvarchar(200),b int,c nvarchar(200))insert into tb
select '一','1','ni' union all
select '一','2','wo' union all
select '二','3','ta' union all
select '二','4','shui'
;with tx as(
select *,row_number() over(partition by t.a order by t.b desc) rn
from tb t
)select * from tx where tx.rn=1 order by tx.a desc;
select a.*
from #tb a
where not exists(select 1 from #tb b where a.A=B.A and b.B>a.B)--方法三:sql 2005 以上
select A,B,C
from
(
select *,rn=row_number() over(partition by A order by B desc) from #tb
)t
where rn=1
if object_id('tb') is not null
drop table tb
go
create table tb(a nvarchar(200),b int,c nvarchar(200))insert into tb
select '一','1','ni' union all
select '一','2','wo' union all
select '二','3','ta' union all
select '二','4','shui'
select a,b,c
from
(
select *,
row_number() over(partition by a order by b desc) as rownum
from tb
)t
where rownum = 1
/*
a b c
二 4 shui
一 2 wo
*/
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
也不行。。
这样呢:
select a,b,c from tttunion SELECT youshiSz,null,null
FROM
(
SELECT xiaobanID,jixuJ,youshiSz,
rownum=ROW_NUMBER() OVER(PARTITION BY xiaobanID ORDER BY jixuJ DESC)
FROM Resources_XiBan
)
t WHERE t.rownum=1
select t.* from ts1 t join
(
select a,max(b) b from ts1 group by a) b on t.a=b.a and t.b=b.b