关于去掉不需要数据select sql语句编写!请求赐教!

zhengxudong 2004-07-16 11:13:11
我的应用是select LDATE,LTIME,IIIII,V05001,V06001,V07001,V13021
from NICC01_DB..SURF01_ELE s1 where s1.LDATE='20040706' and s1.LTIME>='00' and s1.LTIME<='05' and (s1.V13021>0 and s1.V13021<999999)
出来的结果的一部分是:
LDATE LTIME IIIII V05001 V06001 V07001 V13021
20040706,00,50834.000000,46.610001,121.230003,500.000000,0.800000
20040706,00,50834.000000,46.610001,121.230003,500.000000,4.000000
20040706,00,50834.000000,46.610001,121.230003,500.000000,3.000000
我想要其中的V13021最大的一条数据,即中间条。
我将sql语句改为:
select LDATE,LTIME,IIIII,V05001,V06001,V07001,max(V13021)
from NICC01_DB..SURF01_ELE s1 where s1.LDATE='20040706' and s1.LTIME>='00' and s1.LTIME<='05' and (s1.V13021>0 and s1.V13021<999999)
group by IIIII
结果出问题了。where子句的时间范围限制不了了。结果LDATE=20040707的数据都出来了。据说是group by的问题!我觉得这个问题用一个sql语句就能搞定。但现在不行。希望大家出力。谢谢。
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SybaseASE 2004-07-19
  • 打赏
  • 举报
回复
对于GROUP BY,条件应该应用在having句中,你的这个例子,WHERE子句本来就多余:)
whoknow 2004-07-19
  • 打赏
  • 举报
回复
大家都是高手,我在这里只能up了.
zhengxudong 2004-07-16
  • 打赏
  • 举报
回复
yl_yz(yz) :
出错了!
Line 5:
The column prefix 's1' does not match with a table name or alias name used in
the query. Either the table is not specified in the FROM clause or it has a
correlation name which must be used instead.
Msg 107, Level 15, State 1:
你做个类似的?!
zhengxudong 2004-07-16
  • 打赏
  • 举报
回复
我用select IIIII,max(V13021) from NICC01_DB..SURF01_ELE where LDATE='20040706'
and LTIME>='00' and LTIME<='05' and (V13021>0 and V13021<999999)就可以。当查询的字段多于计算字段和分组字段就出错了。
yl_yz 2004-07-16
  • 打赏
  • 举报
回复
试试
select LDATE,LTIME,IIIII,V05001,V06001,V07001,V13021
from NICC01_DB..SURF01_ELE s1 join(
select IIIII,V13021=max(V13021)
from NICC01_DB..SURF01_ELE
where s1.LDATE='20040706' and s1.LTIME>='00' and s1.LTIME<='05' and (s1.V13021>0 and s1.V13021<999999)
group by IIIII
) b1 on NICC01_DB..SURF01_ELE .IIIII=s1.IIIII and NICC01_DB..SURF01_ELE .V13021=s1.V13021
group by IIIII
zhengxudong 2004-07-16
  • 打赏
  • 举报
回复
问题解决了,where条件的内容在having语句的在写一遍,真怪!
select LDATE,LTIME, IIIII,V05001,V06001,V07001,max(V13021) from NICC01_DB..SURF01_ELE
where LDATE='20040706' and LTIME>='00' and LTIME<='00' and (V13021>0 and V13021<999999)
group by IIIII
having LDATE='20040706' and LTIME>='00' and LTIME<='00' and (V13021>0 and V13021<999999)

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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