需求:結合基站費用資訊表和費用型別表,對基站用費分類進行統計彙總.
難點:費用型別由使用者動態配置,所以這裡也必須能動態彙總.
實現:開始的時候是想將費用型別表進行行、列轉換,再通過簡單函式就能實現.但最終失敗!在這裡我換個思路使用臨時表+游標後問題解決,效果還不錯!
---儲存過程---
set quoted_identifier off
goset ansi_nulls on
goalter proc sp_getallsitesum
asbegin
--首先動態建立臨時表
declare @str_createsql varchar(8000)
set @str_createsql = 'create table [temptablename] (基站編號 varchar(10),基站名 varchar(40),'
select @str_createsql = @str_createsql+'['+f_name+'] varchar(20),' from v_dict where f_dictname='費用型別'order by f_name
select @str_createsql = left(@str_createsql,len(@str_createsql)-1)+')'
exec (@str_createsql)
--先將要進行統計彙總的基站資料插入臨時表
insert into temptablename(基站編號,基站名)
select distinct f_sitecode,f_sitename from v_pay order by f_sitecode
--用於測試的sql語句
--select * from temptablename
--drop table temptablename
--delete from temptablename
--drop table temptablename
--select f_name,f_id from v_dict where f_dictname='費用型別' order by f_name
--定義游標
declare @str_updatesql nvarchar(1000)
declare @colume nvarchar(20)
declare @value nvarchar(20)
declare cur cursor for select f_name,f_id from v_dict where f_dictname='費用型別' order by f_name
open cur
fetch next from cur into @colume,@value
while @@fetch_status=0
begin
set @str_updatesql='update temptablename set ' + @colume + '=dbo.funcount('+ @value +',基站編號)'
exec sp_executesql @str_updatesql
fetch next from cur into @colume,@value
end
close cur
deallocate cur
--獲取查詢資料集
select * from temptablename
endgo
set quoted_identifier off
goset ansi_nulls on
go---函式----
set quoted_identifier on
goset ansi_nulls on
goalter function funcount(@paytype varchar(20),@sitecode varchar(20))
returns decimal(18,2)
/*統計在某一時間單位的某中交費型別資料
*/as
begin
declare @f_all decimal(18,2)
select @f_all = convert(decimal(18,2),sum(f_paymoney)) from v_pay where f_sitecode = @sitecode
and f_feeitem = @paytype
if(@f_all is null)
set @f_all = 0
return @f_all
endgo
set quoted_identifier off
goset ansi_nulls on
go
動態規劃資料彙總
這是一篇關於動態規劃的詳解,示例是最大回文字串 照自己理解,動態規劃的狀態轉移方程,就是乙個確定怎麼由子問題轉移到當前的問題得方法,在動態規劃的求解過程中已經按照自底向上的方法把所有可能的解都列舉了一遍,動態規劃是乙個高效率的列舉方法。動態規劃尤其適合解決有重複子問題的題目,相比於遞迴暴力列舉而言,...
sql月度彙總 sql月份彙總查詢語句
sql月份彙總查詢語句 select 鉛筆 as 月份 sum case month 日期 when 1 then 鉛筆 else 0 end as 1月 sum case month 日期 when 2 then 鉛筆 else 0 end as 2月 sum case month 日期 when...
SQL語句彙總
檢視oracle伺服器端字符集 select from nls database parameters 檢視oracle客戶端字符集 select from nls instance parameters 全庫匯出資料 exp 使用者名稱 密碼 遠端的ip 埠 例項 file 存放的位置 檔名稱.d...