易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL存储过程

CREATE PROCEDURE test1
@jyrqi datetime --输入日期作为存储过程的参数


as

create table table1
(
idno varchar(15),
dept varchar(6),
lbmc varchar(10),
jyrqi datetime,
jyl decimal(9,2)
)
insert into table1(idno,dept,lbmc,jyrqi,jyl) select idno,dept,lbmc,jyrqi,jyl from oil_record 
declare @sql varchar(5000)

set @sql='select idno,'
declare @i int
declare @j datetime
set @i=1
set @j=exec (web_getlastdate())--取得输入参数最后一天是几号
while(@i<=@j)
begin
declare @lyr varchar(10)
set @lyr=convert(varchar(10),datepart(year,@jyrqi))+'-'+convert(varchar(10),datepart(month,@jyrqi))+'-'
set @sql=@sql+'sum(case when jyrqi='''+@lyr+convert(varchar(5),@i)+''' then jyl else 0 end) as n'+convert(varchar(5),@i)+','
set @i=@i+1
end
set @sql=@sql+'sum(jyl) from table1 group by idno'
print @sql
exec(@sql)
drop table table1

go

上面是存储过程中的代码,代码中临时建了个表,然后通过SELECT语句把数据显示出来。
问题是显示出来的数据是根据月份的天数(28,29,30,31天)来显示的。比如输入的是2月的话,显示出来的数据只有28或29列数据,现在想在显示数据中加入30和31天的数据(值为0)怎么加?谢谢。

set @sql=@sql+'isnull(sum(jyl),0) from table1 group by idno'

建立临时表的时候。。先判断这个表是否存在。。。否者出错!

IF NOT OBJECT_ID('[tb]') IS NULL
  DROP TABLE [tb]




相关问答:

Asp+sql server问题 - Web 开发 / ASP

我一个项目,有个插入操作,具体是这样的:
我有进货信息表。在出货时选择相应的进货信息,输入数量,选择部门后,点保存按钮,由于网络延时,点一下没有反映,于是用户就又点一下,导致一次插入了两条记录:
例: ......

sql性能求助 - MS-SQL Server / 疑难问题

场景如下:
客户把备份好的数据库,发给我,我在本机还原后,运行写好的存储过程,比较快,并且在实施那边运行同样比较快。但是当实施在客户那边运行的时候速度就非常的慢,时间超出了程序的时间限制。远程在客户那 ......

SQL如何优化问题 - MS-SQL Server / 疑难问题

今天做了一个存储过程   环境是SQL2000数据库  
大致如下
建立临时表
定义员工游标
        循环员工(属于1个公司)  
        ......

数据以xml格式返回 - MS-SQL Server / 应用实例

从数据库中查询一张表的数据
select 部门,姓名 from tb
如何才能生成下面的xml格式
XML code:
<folder state="unchecked" label="全部">
   <folder state="unchecked&qu ......

两句SQL并一句,有问题. - MS-SQL Server / 基础类

第一句:
select ht.gfdm,gfdm.gfmc,gfdm.lb ,sum(jh.htdj*jh.htsl)as je
from ht left join gfdm on ht.gfdm=gfdm.gfdm 
 join jh on ht.htbh=jh.hth 
and ht.htbh not like'del%' and ht. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号