select depcode,personna,typedes,
sum(case when rday='01' then rs else 0 end) as [01],
sum(case when rday='02' then rs else 0 end) as [02],
sum(case when rday='03' then rs else 0 end) as [03],
......
sum(case when rday='31' then rs else 0 end) as [31]
from doctorghview
where ryear=@year and rmonth=@month
group by depcode,personna,typedes另,表结构不合理,太冗余。
@year int, --查询的年份
@month int --查询的月份
as
select depcode,personna,typedes
,[01]=sum(case rday when '01' then rs else 0 end)
,[02]=sum(case rday when '02' then rs else 0 end)
,[03]=sum(case rday when '03' then rs else 0 end)
,[04]=sum(case rday when '04' then rs else 0 end)
,[05]=sum(case rday when '05' then rs else 0 end)
,[06]=sum(case rday when '06' then rs else 0 end)
,[07]=sum(case rday when '07' then rs else 0 end)
,[08]=sum(case rday when '08' then rs else 0 end)
,[09]=sum(case rday when '09' then rs else 0 end)
,[10]=sum(case rday when '10' then rs else 0 end)
,[11]=sum(case rday when '11' then rs else 0 end)
,[12]=sum(case rday when '12' then rs else 0 end)
,[13]=sum(case rday when '13' then rs else 0 end)
,[14]=sum(case rday when '14' then rs else 0 end)
,[15]=sum(case rday when '15' then rs else 0 end)
,[16]=sum(case rday when '16' then rs else 0 end)
,[17]=sum(case rday when '17' then rs else 0 end)
,[18]=sum(case rday when '18' then rs else 0 end)
,[19]=sum(case rday when '19' then rs else 0 end)
,[20]=sum(case rday when '20' then rs else 0 end)
,[21]=sum(case rday when '21' then rs else 0 end)
,[22]=sum(case rday when '22' then rs else 0 end)
,[23]=sum(case rday when '23' then rs else 0 end)
,[24]=sum(case rday when '24' then rs else 0 end)
,[25]=sum(case rday when '25' then rs else 0 end)
,[26]=sum(case rday when '26' then rs else 0 end)
,[27]=sum(case rday when '27' then rs else 0 end)
,[28]=sum(case rday when '28' then rs else 0 end)
,[29]=sum(case rday when '29' then rs else 0 end)
,[30]=sum(case rday when '30' then rs else 0 end)
,[31]=sum(case rday when '31' then rs else 0 end)
from doctorghview
where ryear=@year and rmonth=@month
group by depcode,personna,typedes
create proc p_qry
@year int, --查询的年份
@month int --查询的月份
as
set nocount on
declare @dt1 datetime,@dt2 datetime,@s nvarchar(4000),@i int
select @dt1=dateadd(year,@year-1900,dateadd(month,@month-1,'1900-1-1'))
,@dt2=dateadd(month,1,@dt1)-1
,@i=day(@dt2)
,@s=''
while @i>0
select @s=',['+right(100+@i,2)+']=sum(case day(regidate) when '
+cast(@i as varchar)+' then rs else 0 end)'+@s
,@i=@i-1
set @s='select depcode,personna,typedes'+@s+'
from doctorghview
where regidate between @dt1 and @dt2
group by depcode,personna,typedes'
exec sp_executesql @s
,N'@dt1 datetime,@dt2 datetime'
,@dt1,@dt2
go--调用实现查询
exec p_qry 2004,12
create view dbo.view_doctorghview as
select depcode,personna,typedes,substring(regidate,1,4) as ryear,
substring(regidate,6,2) as rmonth,substring(regidate,9,2)
from doctorghview然后再执行 victorycyz(中海),zjcxc(邹建) 的程序!
也可以把视图得工作加到victorycyz(中海),zjcxc(邹建)程序中也可以实现create proc p_qry
@year int, --查询的年份
@month int --查询的月份
as
select depcode,personna,typedes
,[01]=sum(case substring(regidate,9,2) when '01' then rs else 0 end)
,[02]=sum(case substring(regidate,9,2) when '02' then rs else 0 end)
,[03]=sum(case substring(regidate,9,2) when '03' then rs else 0 end)
,[04]=sum(case substring(regidate,9,2) when '04' then rs else 0 end)
,[05]=sum(case substring(regidate,9,2) when '05' then rs else 0 end)
,[06]=sum(case substring(regidate,9,2) when '06' then rs else 0 end)
,[07]=sum(case substring(regidate,9,2) when '07' then rs else 0 end)
,[08]=sum(case substring(regidate,9,2) when '08' then rs else 0 end)
,[09]=sum(case substring(regidate,9,2) when '09' then rs else 0 end)
,[10]=sum(case substring(regidate,9,2) when '10' then rs else 0 end)
,[11]=sum(case substring(regidate,9,2) when '11' then rs else 0 end)
,[12]=sum(case substring(regidate,9,2) when '12' then rs else 0 end)
,[13]=sum(case substring(regidate,9,2) when '13' then rs else 0 end)
,[14]=sum(case substring(regidate,9,2) when '14' then rs else 0 end)
,[15]=sum(case substring(regidate,9,2) when '15' then rs else 0 end)
,[16]=sum(case substring(regidate,9,2) when '16' then rs else 0 end)
,[17]=sum(case substring(regidate,9,2) when '17' then rs else 0 end)
,[18]=sum(case substring(regidate,9,2) when '18' then rs else 0 end)
,[19]=sum(case substring(regidate,9,2) when '19' then rs else 0 end)
,[20]=sum(case substring(regidate,9,2) when '20' then rs else 0 end)
,[21]=sum(case substring(regidate,9,2) when '21' then rs else 0 end)
,[22]=sum(case substring(regidate,9,2) when '22' then rs else 0 end)
,[23]=sum(case substring(regidate,9,2) when '23' then rs else 0 end)
,[24]=sum(case substring(regidate,9,2) when '24' then rs else 0 end)
,[25]=sum(case substring(regidate,9,2) when '25' then rs else 0 end)
,[26]=sum(case substring(regidate,9,2) when '26' then rs else 0 end)
,[27]=sum(case substring(regidate,9,2) when '27' then rs else 0 end)
,[28]=sum(case substring(regidate,9,2) when '28' then rs else 0 end)
,[29]=sum(case substring(regidate,9,2) when '29' then rs else 0 end)
,[30]=sum(case substring(regidate,9,2) when '30' then rs else 0 end)
,[31]=sum(case substring(regidate,9,2) when '31' then rs else 0 end)
from doctorghview
where substring(regidate,1,4)=@year and substring(regidate,6,2)=@month
group by depcode,personna,typedes