1

clausule を使用したクエリがありますSUM。列の合計に従って必要です。

これは可能ですか?

誰かが私が見るべき例を持っていますか?

以下の私のコード:

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
4

3 に答える 3

3

このようにしてください:

sum(case when p9_codigo in ('408','007','420','009','015','016','018') then pl_horas else 0 end) as 'Hora Extra'

AND P9_CODIGO IN( '011'、 '421'、 '013'、 '409')をwhere句に入れても、上記のものはフィルタリングされません。

したがって、それらを別の方法で削除する必要があります。

私はあなたがそれを次のように必要とするだろうと思います:

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'

where句からフィルターを削除します。

于 2013-03-14T14:52:25.520 に答える
0

とった !全てに感謝

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
于 2013-03-14T15:47:10.573 に答える
-1

podés probar esto:

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',

「コディゴ」としてのP9_CODIGO

SPL020から

PL_PD = P9_CODIGO の内部結合 SP9020

および SP9020.D_E_L_E_T_ <> '*'

AND SPL020.D_E_L_E_T_ <> '*'

内部結合 SRA020 オン RA_MAT = PL_MAT AND SRA020.D_E_L_E_T_ <> '*'

AND RA_FILIAL = PL_FILIAL

RJ_FUNCAO = RA_CODFUNC の内部結合 SRJ020

WHERE PL_DATA BETWEEN '20120616' と '20120715'

AND P9_CODIGO IN ('011','421','013','409')

AND RA_CODFUNC IN ('0408','120​​4','1233')

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

) kk として

ここで、Codigo in('408','007','420','009','015','016','018') は名前順

Unos のヒント: チルダ (C"ó"digo) は使用しないでください espacios en los campos (Horas Extras) は使用しません

サルドス

于 2013-03-14T15:03:28.210 に答える