sql統計之儲存過程

2021-04-02 01:07:54 字數 1733 閱讀 9529

/*測試環境

create table #表1

( 性別 int,

政治面貌 int

)create table #表2

(id int,

info varchar(10)

)create table #表3

(id int,

info varchar(10)

)insert #表3

select 1     ,'男' union

select 2     ,'女'

insert #表2

select 0     ,'__' union

select 1     ,'群眾' union

select 2     ,'共產' union

select 3     ,'共青'

insert #表1

select 1,                  1 union

select 2,                  3 union

select 2,                  0 union

select 1,                 2 union

select 2,                  1

呼叫exec p 政治面貌,性別,表1,表2,表3*/

if exists (select name

from   sysobjects

where  name = 'p'

and    type = 'p')

drop procedure p

gocreate procedure p

@p1 varchar(50),

@p2 varchar(50),

@t1 varchar(50),

@t2 varchar(50),

@t3 varchar(50)

asdeclare @sql varchar(8000)

set @sql='

declare @sql varchar(8000)

set @sql=''''

select @sql=@sql+'',sum(case when c.info=''''''+info+'''''' then 1 else 0 end) as ''''''+info+''''''''

from '+@t3+' group by info

select @sql=''select (case when grouping(b.info)=1 then ''''合計'''' else b.info end) '''''+@p1+'''''''+@sql

+'',count(1) as ''''合計''''''

+'' from '+@t1+' a join '+@t2+' b on a.'+@p1+'=b.id join '+@t3+' c on a.'+@p2+'=c.id''

+'' group by b.info with rollup''

exec(@sql)'

exec(@sql)

go結果:

政治面貌     男    女    合計

__           0     1       1

群眾         1     1       2

共產     1     0       1

共青     0     1       1

合計         2     3       5

SQL之儲存過程

定義變數 declare a int 變數賦值 set a 1 print a 變數結合查詢語句 不跟菠蘿一個產地的水果資訊 select from fruit where source not in select source from fruit where name 菠蘿 declare so...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

SQL基礎之儲存過程

網上有個比較通俗易懂的理解 儲存過程就是預先定義好的sql語句,然後儲存起來,等你用的時候再把自己所需要的匹配的sql語句用execute 即exec 呼叫就行!使用儲存過程的優勢 1.效能高 一條sql語句可以被多個地方使用,這樣進行復雜的操作時 比如多張表連表查詢 可將那些複雜的操作用儲存過程先...

mysql之sql儲存過程

儲存過程 解決某一特徵功能的sql語句集 儲存過程的建立 1 無入參無返回 drop procedure ifexists get student create procedure get student begin select from student end 呼叫儲存過程 call get s...