读书人

100分!诸位大侠帮忙解决?解决后马上

发布时间: 2011-12-25 23:21:20 作者: rapoo

100分!各位大侠帮忙解决?解决后马上给分。
数据库有内容大概形式如下

日期 值

2007-05-06 20
2007-05-07 23
2007-05-09 15
2007-05-11 2
2007-05-12 55
......


怎样显示如下形式,把所缺天数的值显示为0
2007-05-05=0
2007-05-06=20
2007-05-07=23
2007-05-08=0
2007-05-09=19
2007-05-10=0
2007-05-11=2
2007-05-12=55
......
要求效率高的方法和代码,谢谢各位。


[解决办法]
cancerser(都是混饭吃,记得要结帖) ( ) 信誉:98 2007-09-17 16:31:02 得分: 0


1.table 显示前做个循环替换下
2.查的时候在存储过程做文章



-------------------------------
正解
[解决办法]
http://community.csdn.net/Expert/topic/5761/5761870.xml?temp=.378338
[解决办法]
TABLE1 是你的表名

select (CAST(日期 AS nvarchar(20)) + '= ' + CAST(值 AS nvarchar(10))) FROM TABLE1 order by 日期
[解决办法]
sql语句+动态生成
select 日期,值 from 表
while(dr.read)
{
创建动态控件 ... 付值
}
[解决办法]


create table ta(日期 datetime,值 varchar(5))
insert ta
select '2007-01-02 ', '45 '
union all select '2007-01-01 ' , '12 '
union all select '2007-01-04 ' , '24 '

生成一个时间段列:
declare @ta table(t_date datetime)
declare @i datetime
set @i= '2007-01-01 00:00:00 '
while @i!> '2007-1-31 00:00:00 '
begin
insert @ta select convert(varchar(10),@i,120)
select @i=@i+1
end

select convert(varchar(10),t_date,120)+ ' = '+isnull(值,0) from @ta a , ta
where convert(varchar(10),t_date,120)*=convert(varchar(10), "日期 ",120)
and convert(varchar(10),t_date,120) between '2007-01-02 'and '2007-01-31 '
[解决办法]
显示结果

2007-01-02 = 45
2007-01-03 = 0
2007-01-04 = 24
2007-01-05 = 0
2007-01-06 = 0


2007-01-07 = 0
2007-01-08 = 0
2007-01-09 = 0
2007-01-10 = 0
2007-01-11 = 0
2007-01-12 = 0
2007-01-13 = 0
2007-01-14 = 0
2007-01-15 = 0
2007-01-16 = 0
2007-01-17 = 0
2007-01-18 = 0
2007-01-19 = 0
2007-01-20 = 0
2007-01-21 = 0
2007-01-22 = 0
2007-01-23 = 0
2007-01-24 = 0
2007-01-25 = 0
2007-01-26 = 0
2007-01-27 = 0
2007-01-28 = 0
2007-01-29 = 0
2007-01-30 = 0
2007-01-31 = 0

[解决办法]

//各种数据库的SQL语句有些不同,这个是oracle
select concat(concat(a1, '= '),a2) from
(
select cast(日期 as varchar(20 )) a1 ,cast(值 as varchar(20)) a2
from 表
)

//如果要对值进行空值的判断,可以使用case when ,查一下它的用法吧
[解决办法]
我觉的可以建军一个一样的表
temp

Declare @begindate datetime
Declare @enddate datetime
set @begindate = '2007-05-05 '
set @enddate = '2007-06-05 '

select * into temp from 原表

WHILE (@begindate < @enddate )
BEGIN
--要求效率这里可以判断一下@begindate在原表是否存在,不存在再添加
INSERT INTO temp VALUES

(@begindate ,0)

SET @begindate = @begindate + 1

END
select 日期,sum(值) as 值 from
temp group by 日期
drop temp

读书人网 >C#

热点推荐