select kf,pjbm,cx,tycx,pjmc,mcbm,ggxh,kcsl,cbje,cbdj from part_actual
表part_actual中存在一些kf,pjbm,cx相同的数据,怎么样可以实现kf,pjbm,cx相同的数据相加,并列出表中所有的数据?
10 个解决方案
#1
--啥意思??
select kf,pjbm,cx=sum(cx),tycx=sum(tycx),pjmc=sum(pjmc),mcbm=sum(mcbm),ggxh=sum(ggxh),kcsl=sum(kcsl),cbje=sum(cbje),cbdj=sum(cbdj) from part_actual
group by
kf,pjbm,cx
select kf,pjbm,cx=sum(cx),tycx=sum(tycx),pjmc=sum(pjmc),mcbm=sum(mcbm),ggxh=sum(ggxh),kcsl=sum(kcsl),cbje=sum(cbje),cbdj=sum(cbdj) from part_actual
group by
kf,pjbm,cx
#2
select kf,pjbm,cx,tycx,pjmc,sum(kcsl) as kcslhj,sum(cbje) as cbje_hj,round(sum(cbje)/sum(kcsl),2) as cbdjh from part_actual where kcsl<>0 group by kf,pjbm,cx,tycx,pjmc
我写成上面的方法,但是列出字段不够,如果再加上就出现了错误。选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我写成上面的方法,但是列出字段不够,如果再加上就出现了错误。选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
#3
--你的Group by 后面是要非聚合函数的参数啊。
这样。。。。。。
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
这样。。。。。。
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
#4
谢谢,我在您发信息的时候网断了,结果我发完了以后才看到您的,不好意思,是我自己找的一个方法,但是我想这样的,
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
这是您的方法,但是我想如果select A,B,C,D,E=sum(E) from 表 group by A,B,C怎么办呢?
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
这是您的方法,但是我想如果select A,B,C,D,E=sum(E) from 表 group by A,B,C怎么办呢?
#5
D 字段是什么类型的?
D字段加个聚合函数就可以了。比如Max,Min
select A,B,C,D=max(D),E=sum(E)
from 表
group by
A,B,C
D字段加个聚合函数就可以了。比如Max,Min
select A,B,C,D=max(D),E=sum(E)
from 表
group by
A,B,C
#6
如果D是varchar型的怎么办呢?
#7
D 加 max,min 均可以...你看这一列值,要怎么取值。。。。。
#8
select top 5 kf,pjbm,max(cx) as cx,max(pjmc) as pjmc,sum(kcsl) as kcsl,sum(cbje) as cbje,round(sum(cbje)/sum(kcsl),2) as cbdj from part_actual where kcsl<>0 group by kf,pjbm
kf pjbm cx pjmc kcsl cbje cbdj
---- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
8 02080618(改进型) CJ6800G1C2H 后刹车分泵(左) 2.00 560.00 280.000000
8 0210238019 HH-DD6103HSC 机油表 1.00 190.00 190.000000
8 0211158005 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧上座圈 12.00 144.00 12.000000
8 0211158006 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧下座 16.00 272.00 17.000000
8 0211158007 CJ6800G1C2H/YC4110ZQ 高压油泵储油阀弹簧 20.00 160.00 8.000000
(所影响的行数为 5 行)
是这样吧,不过,我就是有一点想不明白,如果我想列出表中的所有字段,但却只想利用其中的几个字段group by 怎么办呢?是不是必须得加聚合函数呢?应该是吧!
kf pjbm cx pjmc kcsl cbje cbdj
---- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
8 02080618(改进型) CJ6800G1C2H 后刹车分泵(左) 2.00 560.00 280.000000
8 0210238019 HH-DD6103HSC 机油表 1.00 190.00 190.000000
8 0211158005 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧上座圈 12.00 144.00 12.000000
8 0211158006 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧下座 16.00 272.00 17.000000
8 0211158007 CJ6800G1C2H/YC4110ZQ 高压油泵储油阀弹簧 20.00 160.00 8.000000
(所影响的行数为 5 行)
是这样吧,不过,我就是有一点想不明白,如果我想列出表中的所有字段,但却只想利用其中的几个字段group by 怎么办呢?是不是必须得加聚合函数呢?应该是吧!
#9
其它字段必须加聚合函数,也要看你具体需求了。也可以用exists 来解决求最值问题。。。。
要看你具体业务需求俩。
要看你具体业务需求俩。
#10
非常感谢,晚安!
#1
--啥意思??
select kf,pjbm,cx=sum(cx),tycx=sum(tycx),pjmc=sum(pjmc),mcbm=sum(mcbm),ggxh=sum(ggxh),kcsl=sum(kcsl),cbje=sum(cbje),cbdj=sum(cbdj) from part_actual
group by
kf,pjbm,cx
select kf,pjbm,cx=sum(cx),tycx=sum(tycx),pjmc=sum(pjmc),mcbm=sum(mcbm),ggxh=sum(ggxh),kcsl=sum(kcsl),cbje=sum(cbje),cbdj=sum(cbdj) from part_actual
group by
kf,pjbm,cx
#2
select kf,pjbm,cx,tycx,pjmc,sum(kcsl) as kcslhj,sum(cbje) as cbje_hj,round(sum(cbje)/sum(kcsl),2) as cbdjh from part_actual where kcsl<>0 group by kf,pjbm,cx,tycx,pjmc
我写成上面的方法,但是列出字段不够,如果再加上就出现了错误。选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我写成上面的方法,但是列出字段不够,如果再加上就出现了错误。选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
#3
--你的Group by 后面是要非聚合函数的参数啊。
这样。。。。。。
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
这样。。。。。。
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
#4
谢谢,我在您发信息的时候网断了,结果我发完了以后才看到您的,不好意思,是我自己找的一个方法,但是我想这样的,
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
这是您的方法,但是我想如果select A,B,C,D,E=sum(E) from 表 group by A,B,C怎么办呢?
select A,B,C,D,E=sum(E)
from 表
group by
A,B,C,D
这是您的方法,但是我想如果select A,B,C,D,E=sum(E) from 表 group by A,B,C怎么办呢?
#5
D 字段是什么类型的?
D字段加个聚合函数就可以了。比如Max,Min
select A,B,C,D=max(D),E=sum(E)
from 表
group by
A,B,C
D字段加个聚合函数就可以了。比如Max,Min
select A,B,C,D=max(D),E=sum(E)
from 表
group by
A,B,C
#6
如果D是varchar型的怎么办呢?
#7
D 加 max,min 均可以...你看这一列值,要怎么取值。。。。。
#8
select top 5 kf,pjbm,max(cx) as cx,max(pjmc) as pjmc,sum(kcsl) as kcsl,sum(cbje) as cbje,round(sum(cbje)/sum(kcsl),2) as cbdj from part_actual where kcsl<>0 group by kf,pjbm
kf pjbm cx pjmc kcsl cbje cbdj
---- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
8 02080618(改进型) CJ6800G1C2H 后刹车分泵(左) 2.00 560.00 280.000000
8 0210238019 HH-DD6103HSC 机油表 1.00 190.00 190.000000
8 0211158005 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧上座圈 12.00 144.00 12.000000
8 0211158006 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧下座 16.00 272.00 17.000000
8 0211158007 CJ6800G1C2H/YC4110ZQ 高压油泵储油阀弹簧 20.00 160.00 8.000000
(所影响的行数为 5 行)
是这样吧,不过,我就是有一点想不明白,如果我想列出表中的所有字段,但却只想利用其中的几个字段group by 怎么办呢?是不是必须得加聚合函数呢?应该是吧!
kf pjbm cx pjmc kcsl cbje cbdj
---- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
8 02080618(改进型) CJ6800G1C2H 后刹车分泵(左) 2.00 560.00 280.000000
8 0210238019 HH-DD6103HSC 机油表 1.00 190.00 190.000000
8 0211158005 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧上座圈 12.00 144.00 12.000000
8 0211158006 CJ6800G1C2H/YC4110ZQ 高压油泵弹簧下座 16.00 272.00 17.000000
8 0211158007 CJ6800G1C2H/YC4110ZQ 高压油泵储油阀弹簧 20.00 160.00 8.000000
(所影响的行数为 5 行)
是这样吧,不过,我就是有一点想不明白,如果我想列出表中的所有字段,但却只想利用其中的几个字段group by 怎么办呢?是不是必须得加聚合函数呢?应该是吧!
#9
其它字段必须加聚合函数,也要看你具体需求了。也可以用exists 来解决求最值问题。。。。
要看你具体业务需求俩。
要看你具体业务需求俩。
#10
非常感谢,晚安!