从spzs表总共取5条信息(id,cpmc,dateandtime,gsid,zsbz),在hot_top里设置了gsid,可能是多个gsid,优先取hot_top表中gsid的日期最新的一条信息,不重复,不足5条的,再取其他gsid的不重复的一条信息,凑足5条就可以了,我做了如下语句,但只取了id号最大的,不能满足需要,现在需要修改为取日期最新的: sql="select top 5 b.id,b.cpmc,b.dateandtime,b.gsid,b.zsbz from (select max(id) id from spzs where flag=1 group by gsid) a inner join spzs b on a.id=b.id left join hot_top c on b.gsid=c.gsid order by case when c.gsid is not null then 0 when b.zsbz like '%02% ' then 1 else 2 end,b.dateandtime desc"
请改为取日期最新的SQL
请改为取日期最新的SQL
解决方案 »
- 邹老大的书提出的问题:什么时候应该使用存储过程?什么时候使用用户自定义函数?
- 请教用Sqldataadapter.update(DataTable)插入一条记录后后怎么得到该datatable对应数据库表自增的字段值
- SQLServer 工具箱(脚本排序+清除日志+更多实用功能)
- 怎样将数据库1的表添加到数据库2的另一个表?
- binary 数据类型究竟什么情况下才使用 ???money类型¥33和$33 显示都是33 ???
- SQL安装问题,快来抢分啊!
- 用access2002将mssqlserver/sybasesqlserver导入mdb数据库中为何表名发生变化?
- 求助:如何在添加时得到自增长字段的值
- 请教!
- SQL拼接字符串 简单小问题
- 触发器问题,急急急!
- 求一sql语句,请帮忙修改一下
top 5
b.id,b.cpmc,b.dateandtime,b.gsid,b.zsbz
from
spzs a
inner join
spzs b on a.id=b.id
left join
hot_top c on b.gsid=c.gsid
where
not exists(select 1 from spzs where flag=a.flag and gsid=a.gsid and flag=1 and dateandtime>a.dateandtime)
order by
case when c.gsid is not null then 0 when b.zsbz like '%02% ' then 1 else 2 end,
b.dateandtime desc
(select a.* from spzs a where dateandtime = (select max(dateandtime) from spzs where gsid = a.gsid)) t
(select a.* from spzs a where dateandtime = (select max(dateandtime) from spzs where gsid = a.gsid)) t order by gsid