[英]SUM WITH CONDITION
I have a query with clausule SUM
. 我有clausule SUM
查询。 I need according to the sum of column. 我需要根据列的总和。
Is this possible? 这可能吗?
Does anyone have an example for me to look at? 有没有人给我看一个例子?
My code below: 我的代码如下:
SELECT
PL_MAT AS 'Código',
RA_NOME AS 'Nome',
RJ_DESC AS 'Cargo',
SUM(PL_HORAS) AS 'Atrasos'
--SUM(PL_HORAS) AS 'Hora Extra' -- I need SUM this
FROM SPL020
INNER JOIN SP9020 ON PL_PD = P9_CODIGO AND SP9020.D_E_L_E_T_ <> '*' AND SPL020.D_E_L_E_T_ <> '*'
INNER JOIN SRA020 ON RA_MAT = PL_MAT AND SRA020.D_E_L_E_T_ <> '*' AND RA_FILIAL = PL_FILIAL
INNER JOIN SRJ020 ON RJ_FUNCAO = RA_CODFUNC
WHERE PL_DATA BETWEEN '20120616' AND '20120715'
AND P9_CODIGO IN ('011','421','013','409')
--AND P9_CODIGO IN ('408','007','420','009','015','016','018') -- I need sum this
AND RA_CODFUNC IN ('0408','1204','1233')--AUX COLETA C,MOTORISTA D,MOTORISTA CARRETEIRO
AND RA_SITFOLH NOT IN ('D','A')
AND PL_FILIAL = '05'
GROUP BY PL_MAT,RA_NOME,RA_ADMISSA,RA_CODFUNC,RJ_DESC,P9_DESC, PL_HORAS, P9_CODIGO
ORDER BY RA_NOME
Do like this: 这样做:
sum(case when p9_codigo in ('408','007','420','009','015','016','018') then pl_horas else 0 end) as 'Hora Extra'
If you though put AND P9_CODIGO IN ('011','421','013','409') in the where clause the above ones will not be filtered. 如果您将AND P9_CODIGO IN('011','421','013','409')放在where子句中,则上面的那些将不会被过滤。
So you will need to remove them differently. 因此,您将需要以不同的方式删除它们。
I guess you will need it like: 我想您将需要像:
sum(case when p9_codigo in ('011','421','013','409') then PL_HORAS else 0 end) as 'Atrasos',
sum(case when p9_codigo in ('408','007','420','009','015','016','018') then pl_horas else 0 end) as 'Hora Extra'
and remove the filters from the where clause. 并从where子句中删除过滤器。
Got it ! 得到它了 ! Thanks for all 谢谢大家
SELECT
DISTINCT PL_MAT AS 'Código',
RA_NOME AS 'Nome',
RJ_DESC AS 'Cargo',
SUM(CASE WHEN P9_CODIGO IN ('082','080','030','409') THEN PL_HORAS ELSE 0 END) AS 'Atrasos',
SUM(CASE WHEN P9_CODIGO IN ('408','007','420','009','015','016','018') THEN PL_HORAS ELSE 0 END) AS 'Hora extra'
--SUM(PL_HORAS) AS 'Hora Extra' -- I need SUM this
FROM SPL020
INNER JOIN SP9020 ON PL_PD = P9_CODIGO AND SP9020.D_E_L_E_T_ <> '*' AND SPL020.D_E_L_E_T_ <> '*'
INNER JOIN SRA020 ON RA_MAT = PL_MAT AND SRA020.D_E_L_E_T_ <> '*' AND RA_FILIAL = PL_FILIAL
INNER JOIN SRJ020 ON RJ_FUNCAO = RA_CODFUNC
WHERE PL_DATA BETWEEN '20120616' AND '20120715'
--AND P9_CODIGO IN ('011','421','013','409')
--AND P9_CODIGO IN ('408','007','420','009','015','016','018') -- I need sum this
AND RA_CODFUNC IN ('0408','1204','1233')--AUX COLETA C,MOTORISTA D,MOTORISTA CARRETEIRO
AND RA_SITFOLH NOT IN ('D','A')
AND PL_FILIAL = '05'
AND RA_MAT = '000007'
GROUP BY PL_MAT, RA_NOME, RJ_DESC
podés probar esto: podésprobar esto:
select nome, cargo, sum(Hora_Extra) as Hora_Extra from( SELECT PL_MAT AS 'Codigo', RA_NOME AS 'Nome', RJ_DESC AS 'Cargo', SUM(PL_HORAS) AS 'Atrasos', 从(SELECT PL_MAT AS'Codigo',RA_NOME AS'Nome',RJ_DESC AS'Cargo',SUM(PL_HORAS)AS'Atrasos'中选择nome,cargo,sum(Hora_Extra)as Hora_Extra作为Hora_Extra,
P9_CODIGO as 'Codigo' P9_CODIGO为“ Codigo”
FROM SPL020 从SPL020
INNER JOIN SP9020 ON PL_PD = P9_CODIGO 内联接SP9020 ON PL_PD = P9_CODIGO
AND SP9020.D_E_L_E_T_ <> '*' AND SP9020.D_E_L_E_T_ <>'*'
AND SPL020.D_E_L_E_T_ <> '*' AND SPL020.D_E_L_E_T_ <>'*'
INNER JOIN SRA020 ON RA_MAT = PL_MAT AND SRA020.D_E_L_E_T_ <> '*' 内联接SRA020 ON RA_MAT = PL_MAT AND SRA020.D_E_L_E_T_ <>'*'
AND RA_FILIAL = PL_FILIAL AND RA_FILIAL = PL_FILIAL
INNER JOIN SRJ020 ON RJ_FUNCAO = RA_CODFUNC RJ_FUNCAO上的内部联接SRJ020 = RA_CODFUNC
WHERE PL_DATA BETWEEN '20120616' AND '20120715' “ 20120616”和“ 20120715”之间的PL_DATA在哪里
AND P9_CODIGO IN ('011','421','013','409') AND P9_CODIGO IN('011','421','013','409')
AND RA_CODFUNC IN ('0408','1204','1233') AND RA_CODFUNC IN('0408','1204','1233')
AND RA_SITFOLH NOT IN ('D','A') AND RA_SITFOLH NOT IN('D','A')
AND PL_FILIAL = '05' AND PL_FILIAL ='05'
GROUP BY PL_MAT,RA_NOME,RA_ADMISSA,RA_CODFUNC,RJ_DESC,P9_DESC, PL_HORAS, P9_CODIGO GROUP BY PL_MAT,RA_NOME,RA_ADMISSA,RA_CODFUNC,RJ_DESC,P9_DESC,PL_HORAS,P9_CODIGO
) as kk )如kk
where Codigo in('408','007','420','009','015','016','018') order by nome 其中Codigo在('408','007','420','009','015','016','018')中由nome排序
Unos tips: no uses tildes (C"ó"digo) No uses espacios en los campos (Horas Extras) Unos提示:不使用波浪号(C“ó” digo)不使用espacios en los campos(Horas Extras)
Saludos Saludos
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.