求SQL语句

htpower 2011-03-11 10:53:19
表1结构
=================
ID UNAME
=================
1 aaaaa
2 bbbbb
3 ccccc


表2结构
=================
Uid Y M S
=================
1 2011 1 8
1 2011 2 0
1 2010 12 7
2 2010 12 8
2 2010 11 6
2 2010 10 10
3 2010 8 10

查询表1中的所有用户,用户在表2中Y和M都为最大值的时候S的值

结果:
=============================================
ID UNAME Y M S
==========================================
1 aaaa 2011 2 0
2 bbbb 2010 12 8
3 cccc 2010 8 10
=======================================

求SQL查询语句,谢谢各位大大~麻烦了~
...全文
170 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fry_cici 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 pittroll 的回复:]
select a.*,(select top 1 * from t2 b where a.uid = b.id order by Y desc,M desc) from t1 a 这样试试呢,估计也不太靠谱。
[/Quote]

。。这个答案不就是我的么
htpower 2011-03-11
  • 打赏
  • 举报
回复
SELECT id,
(SELECT TOP 1 年份
FROM 用水量 b
WHERE a.id = b.用户编号
ORDER BY 年份 DESC, 月份 DESC) AS 年份,
(SELECT TOP 1 月份
FROM 用水量 b
WHERE a.id = b.用户编号
ORDER BY 年份 DESC, 月份 DESC) AS 月份,
(SELECT TOP 1 本期底数
FROM 用水量 b
WHERE a.id = b.用户编号
ORDER BY 年份 DESC, 月份 DESC) AS 本期底数,
(SELECT TOP 1 本期时间
FROM 用水量 b
WHERE a.id = b.用户编号
ORDER BY 年份 DESC, 月份 DESC) AS 本期时间
FROM 用户资料 a
WHERE (用户区域 = 57) AND (水表状态 = 1)

靠谱靠谱~
多谢
Fry_cici 2011-03-11
  • 打赏
  • 举报
回复
select * from t1 a, (select top 1 * from t2 b where a.uid = b.id order by Y desc,M desc)
写反了 。。
L61551 2011-03-11
  • 打赏
  • 举报
回复
SELECT *,(SELECT name FROM a WHERE id = bb.uid) name
FROM b AS bb WHERE s IN
(SELECT TOP 1 s FROM b WHERE b.uid = bb.uid ORDER BY y DESC, m DESC )
AND uid IN(SELECT TOP 1 id FROM a WHERE id = bb.uid)


输出来是对的。。不过就不知道符合不符合你的要求了。。
PitTroll 2011-03-11
  • 打赏
  • 举报
回复
select a.*,(select top 1 * from t2 b where a.uid = b.id order by Y desc,M desc) from t1 a 这样试试呢,估计也不太靠谱。
htpower 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 fry_cici 的回复:]
select * from t1 a, (select top 1 * from t2 b order by Y desc,M desc where a.uid = b.id)
[/Quote]
也不对啊兄弟~ where有错误
Fry_cici 2011-03-11
  • 打赏
  • 举报
回复
select * from t1 a, (select top 1 * from t2 b order by Y desc,M desc where a.uid = b.id)
htpower 2011-03-11
  • 打赏
  • 举报
回复
很不巧~sqlserver2000~~~~555555
PitTroll 2011-03-11
  • 打赏
  • 举报
回复
SQL2005以及以上的数据库才可以,2000的再想其他办法了。
htpower 2011-03-11
  • 打赏
  • 举报
回复
我应该没抄错呀~
htpower 2011-03-11
  • 打赏
  • 举报
回复
select * from (select row_number() over(partition by 用户资料.id order by 用水量.年份 desc,用水量.月份 desc) as temprow,
用户资料.用户名,用水量.年份,用水量.月份,用水量.本期底数 from 用户资料 join 用水量 on 用户资料.id=用水量.用户编号) as a where a.temprow=1
htpower 2011-03-11
  • 打赏
  • 举报
回复
服务器: 消息 195,级别 15,状态 10,行 1
'row_number' 不是可以识别的 函数名。
PitTroll 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 htpower 的回复:]
row_number()
这个是什么?
[/Quote]
加个行号
XX1234567890AA 2011-03-11
  • 打赏
  • 举报
回复
希望可以帮得上你
-------------------------------
;with tb1 as
(select 1 Userid , 'aaaaa' Uname union all
select 2 ,'bbbbb' union all
select 3 ,'ccccc'),


tb2 as
(
select 1 UserID, 2011 Y, 1 M, 8 S union all
select 1, 2011, 2, 0 union all
select 1, 2010, 12, 7 union all
select 2, 2010, 12, 8 union all
select 2, 2010, 11, 6 union all
select 2, 2010, 10, 10 union all
select 3, 2010, 8, 10)


select UserID,UName,Y,M,S
from (select row_number() over(partition by a.UserID order by y desc ,m desc) rowid,a.UserID,a.Uname,b.Y,b.M,b.S
from tb1 as a
left join tb2 as b on a.Userid=b.Userid) as tb3
where rowid=1


---===================================
UserID UName Y M S
1 aaaaa 2011 2 0
2 bbbbb 2010 12 8
3 ccccc 2010 8 10
htpower 2011-03-11
  • 打赏
  • 举报
回复
row_number()
这个是什么?
jeje 2011-03-11
  • 打赏
  • 举报
回复
哈哈,那再想下。我电脑上没有装SQL没法测试郁闷
PitTroll 2011-03-11
  • 打赏
  • 举报
回复
select * from (select row_number() over(partition by 表1.ID order by 表2.Y desc,表2.M desc) as temprow,表1.UNAME,表2.Y,表2.M,表2.S from 表1 join 表2 on 表1.ID=表2.Uid)a where a.temprow=1;
htpower 2011-03-11
  • 打赏
  • 举报
回复
呵呵~不对~我原来也是这么写的~也不对~
htpower 2011-03-11
  • 打赏
  • 举报
回复
select * from 用户资料
inner join 用水量
on 用户资料.id = 用水量.用户编号
order by 用水量.年份,用水量.月份 desc
group by 用户资料.id

服务器: 消息 156,级别 15,状态 1,行 6
在关键字 'group' 附近有语法错误。
jeje 2011-03-11
  • 打赏
  • 举报
回复
提供一下思路看行不行。手写的没有测试
加载更多回复(3)

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧