SQL指定行求和,求個儲存過程,SQL 儲存過程求和,求同比,請高手解答!

時間 2022-02-21 22:50:24

1樓:

select 建立人,sum(case when 工作型別='t106' then 耗時 else 0 end) as t106,

sum(case when 工作型別='t102' then 耗時 else 0 end) as t102,

sum(case when 工作型別='t106' then 耗時 else 0 end)

+sum(case when 工作型別='t102' then 耗時 else 0 end) as 總耗時

from test where 工作型別 in ('t106','t102') or 建立人 in ('a','b')

group by 建立人;

2樓:匿名使用者

create table tablef(建立人 char(20),t101 float,t102 float,t105 float,t106 float

)create proc t

asdeclare @sql varchar(800)

set @sql='select 建立人'

select @sql =@sql+', max(case 工作型別 when '''+工作型別+''' then 耗時 else 0 end )['+工作型別+']'

from (select distinct 工作型別 from tabled ) as a

set @sql= @sql+'from tabled group by 建立人'

insert into tablef

exec(@sql)

select 建立人, t106,t102 ,sum(t106+t102) from tablef where 建立人 in ('a','b') group by 建立人, t106,t102

3樓:匿名使用者

select 建立人 , sum(耗時) 總耗時 ,,case 工作型別 when t106 then 耗時 else 0 end t106

,case 工作型別 when t102 then 耗時 else 0 end t102

,case 工作型別 when t101 then 耗時 else 0 end t101

group by 建立人

怎麼用sql儲存過程來跨行求和並且插入到資料庫中,急用,跪謝啦 30

4樓:

跨行求和,判斷rownum(oracle)或者類似的引數的奇數偶數即可吧。

sql server 如何對一個欄位的某幾行求和

5樓:標標課堂

sql server資料中運算子與表示式

6樓:折柳成萌

select sum(id4),count(*) from a_temp ;

可以一句sql就直接查詢得到列的和以及記錄數。

該sql中sum(id4)是列id4的總和,count(*)是得到的資料總行數。

7樓:匿名使用者

寫一個儲存過程吧,來的快些。

sql 儲存過程求和,求同比,請高手解答!

8樓:it技術小店

以a表為例子

先建立一個table0

create table_0

(n_date date,

sheng varchar2(20),

sale number

tongbi number);

create unique index table_0_u1 on table_0 (n_date,sheng);

create or replace package body pkg_b_tongji is

procedure sp_update_party_rating(p_sdate number, p_edate number) is

v_sdate date default to_date(p_sdate,'yyyymmdd');

v_edate date default to_date(p_edate,'yyyymmdd');

v_sqlupd varchar2(3000);

v_sqlins varchar2(3000);

begin

v_sqlins := 'insert into table_0(n_date,sheng,sale)

values(:v1,:v2,:v3)';

v_sqlupd := 'update table_0 t set sale = :v1

where n_date = :v2 and sheng = :v3';

for c1 in (select a.ndate,

a.sheng,

sum(sale) sale

from a

where ndate between v_sdate and v_edate

group by a.ndate,

a.sheng

)loop

execute immediate v_sqlupd using c1.sale;

if sql%rowcount<=0 then --如果更新操作沒有執行就執行插入操作

execute immediate v_sqlins using c1.n_date,c1.sheng,c1.sale;

end if;

end loop;

commit;

end sp_update_party_rating;

---更新同比

procedure sp_update_tongbi is

begin

for c2 in (

select n_date,

sheng,

sale,

nvl(sale,0) sale1

from table_0 a

left join

(select n_date,sheng,a.nvl(sale,0) sale

from table_0 a,

(select t.n_date,sheng

add_months(n_date,-1) n_date2

from table_0 t)

where a.sheng = b.sheng and a.n_date = b.n_date2)

)loop

update table_0

set tongbi = sale/sale1

where n_date = c2.n_date and sheng = c2.sheng;

commit;

end loop;

end sp_update_tongbi;

end pkg_b_tongji;

sql儲存過程中根據判斷拼接sql語句然後執行

雨夜 狂想 我給你舉一個構造sql語句的例子,首先把sql語句計算出來,然後再執行這個計算出來的sql語句 declare lssql nvarchar 1024 a varchar 10 b varchar 10 c varchar 32 set a select set b set c from...

sql,用2019這儲存過程應該怎麼寫

create proc procname resumestate1 varchar 20 resumestate2 varchar 20 asif resumestate1 山西 begin select from searchviewwhere 1 1 and state 1endif resum...

sql2005儲存過程中變數的使用

yf在你的儲存過程中是定義了,但是在 sql中沒有定義,當你執行 sql的時候,外面定義的變數在裡面是無效的。給你3點建議。1.能不用動態sql儘量不要用,因為系統沒法給你預先確定執行計劃,所以動態sql是不高效的。2.既然你用了動態sql,那麼複雜的判斷邏輯就不要放在 sql 裡面了。而是放在外面...