如何分类汇总

更新时间:2023-03-10 18:59:51 阅读: 评论:0

鱼竿怎么绑线-平安吉祥

如何分类汇总
2023年3月10日发(作者:红豆薏米粥的正确做法)

mysql数据库多级分类汇总_sql多级分类汇总实现介绍

t1

idparentid

ma

na

em

fm

xf

yf

zb

t2

rowidamount

1a13.00

2b20.00

3e20.00

4f20.00

5x20.00

6y20.00

7z20.00

8e12.00

9x11.00

10f13.00

如何得出如下结果:

rowidamount

7x20.00

11x11.00

x⼩计31.00

8y20.00

y⼩计20.00

6f20.00

12f13.00

f⼩计84.00

5e20.00

10e12.00

e⼩计32.00

3m14.00

m⼩计130.00

4n13.00

n⼩计13.00

1a13.00

a⼩计156.00

9z20.00

z⼩计20.00

2b20.00

b⼩计40.00

总计196.00

实现程序

--⽰例数据

CREATETABLEt1(

idchar(1),

parentidchar(1)

);

INSERTt1

SELECT'm','a'UNIONALL

SELECT'n','a'UNIONALL

SELECT'e','m'UNIONALL

SELECT'f','m'UNIONALL

SELECT'x','f'UNIONALL

SELECT'y','f'UNIONALL

SELECT'z','b';

CREATETABLEt2(

rowint,

idchar(1),

amountdecimal(10,2)

);

INSERTt2

SELECT'1','a','13.00'UNIONALL

SELECT'2','b','20.00'UNIONALL

SELECT'3','e','20.00'UNIONALL

SELECT'4','f','20.00'UNIONALL

SELECT'5','x','20.00'UNIONALL

SELECT'6','y','20.00'UNIONALL

SELECT'7','z','20.00'UNIONALL

SELECT'8','e','12.00'UNIONALL

SELECT'9','x','11.00'UNIONALL

SELECT'10','f','13.00';

GO

--统计

--逐级汇总

declare@lint

t@l=1

lect

A.[id],

[pid]=id,

[sumnum]=SUM(),

level=ca

whenexists(lect*fromt1whereparentid=a.[id])

then@l-1el@lend

into[#]

fromt1A

LEFTJOINt2B

=

,id;

if@@row/get=_blank>count>0

createindexIDX_#_id_pidon[#]([id],[pid])

el

t@l=999

while@@rowcount>0or@l=1

begin

t@l=@l+1

updateatlevel=@l,[sumnum]=isnull(a.[sumnum],0)+isnull(b.[sumnum],0)

from[#]a,(

,[sumnum]=sum(aa.[sumnum])

from[#]aa,(

lectdistinct[pid]from[#]

wherelevel=@l-1

)bbwhereaa.[pid]=bb.[pid]

ANDNOTEXISTS(

SELECT*FROM[#]WHERE[PID]=aa.[PID]AND[Level]=0)

GROUPBYaa.[PID]

havingsum(=0then1el0end)=0

)bwherea.[id]=b.[pid]

end

--最终结果

SELECT

row=CASE

WHENGROUPING()=0THENRTRIM()

ELSEN''

END,

id=CASE

WHENGROUPING()=

WHENGROUPING()=+'⼩计'

ELSEN'总计'

END,

amount=CASE

WHENGROUPING()=0THENSUM()

WHENGROUPING()=0THENISNULL((SELECTSUM()FROM#=),SUM())

ELSESUM()

END

FROMt2A

,HROLLUP;

droptable[#]

GO

DROPTABLEt1,t2;

/*--结果

rowidamount

--------------------------------------------------------

1a13.00

a⼩计13.00

2b20.00

b⼩计20.00

3e20.00

8e12.00

e⼩计32.00

4f20.00

10f13.00

f⼩计84.00

5x20.00

9x11.00

x⼩计31.00

6y20.00

y⼩计20.00

7z20.00

z⼩计20.00

总计169.00

(18⾏受影响)

--*/

本文发布于:2023-03-10 18:59:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678445991206830.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:如何分类汇总.doc

本文 PDF 下载地址:如何分类汇总.pdf

上一篇:土豆炒西红柿
下一篇:返回列表
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图