求一SQL语句 ,请求帮助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一SQL语句 ,请求帮助相关的知识,希望对你有一定的参考价值。

有如下表格
日期 数值
2010-1-6 5
2010-1-7 7
2010-1-8 null
2010-1-9 null
2010-1-10 8
悬赏分:10 | 离问题结束还有 14 天 23 小时 | 提问者:wnkiki4
我想求查询出
日期 数值
2010-1-6 5
2010-1-7 7
2010-1-8 7
2010-1-9 7
2010-1-10 8
如果本日数值为null 就继承上一日的数值 请问sql语句怎么写
我使用的是windows xp mssql2005
使用你们( feixianxxx)所说的成立语句后 结果为:
日期 数值
2010-1-6 5
2010-1-7 7
2010-1-8 7
2010-1-9 null
2010-1-10 8
只继承了一行的结果 是不是 我数据库的问题?

FEIXIANXXX 回答感觉是不是少个条件啊 ?
[ select 日期,
数值=case when 数值 is null then (select top 1 数值 from tb where k.日期>日期 order by 日 期 desc) else 数值 end
from tb k ]
在他这个回答里 “select top 1 数值 from tb where k.日期>日期 后面加上 AND 数值 IS NOT NULL”
你4一下!我只是简单看了你的问题和他的!我没试验!
参考技术A select 日期,
数值=case when 数值 is null then (select top 1 数值 from tb where k.日期>日期 order by 日期 desc) else 数值 end
from tb k
参考技术B select date as 日期,
num=case when code is null then (select top 1 code from tb where t.date>date order by date desc) else code end as 数值
from 查询表 t

该方法已经验证过,成立
参考技术C 问题补充:

如果再加一个类别表怎么写了
---------------------------
select a.编号,a.姓名,c.类别名称,
count(b.姓名编号) as 出现次数
from a
inner join c on c.类别编号=a.类别编号
left join b on a.编号=b.姓名编号
group by a.编号,a.姓名 ,c.类别名称

sql select语句,如何查找最后一行的数据

如果数据表有自增ID列的的话,可运行下列语句获得:
select
*
from
tableName
where
id=
(select
max(id)
from
tablename);
如果没有则增ID列的话,那就要使用游标了或者利用应用程序端编程获取最后那行记录了。当然如果版本支持ROW_NUMBER()函数的也可以用它获取最后一行数据。
参考技术A 在sql中根本就没有你说的那种用法。。
如果你想取最后一行数据的话,得根据你的表结构和实际数据的情况进行编写sql语句。
如果你就想求一条完全能用的sql语句,基本上是不太可能的。。
参考技术B select
top
1
*
from
表名
order
by
用于排序的字段(一般是id)
desc
这样就可以降序排列,查询结果的第一条记录也就是表中的最后一条记录。
参考技术C "既然有Select
top
1
*
,那请问有没有
Select
button
1
*
或Select
last
1
*呢?"肯定不行的,呵呵,你就按上面两位说的,选择用一个降序排序就OK了
参考技术D SELECT
MIN(id)
FROM
table_name
ORDER
BY
Company
DESC
SELECT
Max(id)
FROM
table_name
这样都是最后一行

以上是关于求一SQL语句 ,请求帮助的主要内容,如果未能解决你的问题,请参考以下文章

求一条SQL语句

求一SQL语句:如何查询最大的前3个值

求一条插入并返回的SQL语句

求一sql语句使数据按 where in 括号内的数据顺序排列

求一条SQL语句:修改一个字段由1自然增加到最后

求一句sql语句:大于或者小于某个值,但只取紧挨着的6项。