J'ai besoin de montrer la somme d'une colonne, comme:
Comment puis-je créer une somme du "LQ", par exemple:
MON Code: P> 0 + 0 + 38 + 1010 + 216 + 664 CODE> P> select pla.DSC_ACO,
sum(case when res.cod_ordem_producao like 'LQX%' then 1 else 0 end) as lqx,
sum(case when res.cod_ordem_producao like 'LQP%' then 1 else 0 end) as lqp,
sum(case when res.cod_ordem_producao like 'LQT%' then 1 else 0 end) as LQT,
sum(case when res.cod_ordem_producao like 'LQRT%' then 1 else 0 end) as lqrt,
sum(case when res.cod_ordem_producao like 'LQRZ%' then 1 else 0 end) as lqrz,
sum(case when res.cod_ordem_producao like 'LQZ%' then 1 else 0 end) as LQZ,
sum(case when res.cod_ordem_producao like 'LQRW%' then 1 else 0 end) as lqrw,
sum(case when res.cod_ordem_producao like 'LQW%' then 1 else 0 end) as LQW,
sum(case when res.cod_ordem_producao like 'LQ%' then 1 else 0 end) as Lq,
sum(case when res.cod_ordem_producao like 'LQR%' then 1 else 0 end) as LQR
from QT_QTS.RES_TUBO_REVENIMENTO2 res, QT_QTS.PLA_ORDEM_PRODUCAO pla
where res.COD_ORDEM_PRODUCAO = pla.COD_ORDEM_PRODUCAO
and res.DTH_CRIACAO_REG >= :dthini
and res.DTH_CRIACAO_REG <=:dthfim
group by pla.DSC_ACO
4 Réponses :
J'espère que cela fonctionne :)
select pla.DSC_ACO,
sum(case when res.cod_ordem_producao like 'LQX%' then 1 else 0 end) as lqx,
sum(case when res.cod_ordem_producao like 'LQP%' then 1 else 0 end) as lqp,
sum(case when res.cod_ordem_producao like 'LQT%' then 1 else 0 end) as LQT,
sum(case when res.cod_ordem_producao like 'LQRT%' then 1 else 0 end) as lqrt,
sum(case when res.cod_ordem_producao like 'LQRZ%' then 1 else 0 end) as lqrz,
sum(case when res.cod_ordem_producao like 'LQZ%' then 1 else 0 end) as LQZ,
sum(case when res.cod_ordem_producao like 'LQRW%' then 1 else 0 end) as lqrw,
sum(case when res.cod_ordem_producao like 'LQW%' then 1 else 0 end) as LQW,
sum(case when res.cod_ordem_producao like 'LQ%' then 1 else 0 end) as Lq,
sum(case when res.cod_ordem_producao like 'LQR%' then 1 else 0 end) as LQR
from QT_QTS.RES_TUBO_REVENIMENTO2 res, QT_QTS.PLA_ORDEM_PRODUCAO pla
where res.COD_ORDEM_PRODUCAO = pla.COD_ORDEM_PRODUCAO
and res.DTH_CRIACAO_REG >= :dthini
and res.DTH_CRIACAO_REG <=:dthfim
group by pla.DSC_ACO
UNION ALL
SELECT
'TOTAL' DSC,
SUM(lqx),
SUM(lqp),
SUM(LQT),
SUM(lqrt),
SUM(qrz),
SUM(LQZ),
SUM(lqrw),
SUM(LQW),
SUM(Lq),
SUM(LQR)
FROM (select pla.DSC_ACO,
sum(case when res.cod_ordem_producao like 'LQX%' then 1 else 0 end) as lqx,
sum(case when res.cod_ordem_producao like 'LQP%' then 1 else 0 end) as lqp,
sum(case when res.cod_ordem_producao like 'LQT%' then 1 else 0 end) as LQT,
sum(case when res.cod_ordem_producao like 'LQRT%' then 1 else 0 end) as lqrt,
sum(case when res.cod_ordem_producao like 'LQRZ%' then 1 else 0 end) as lqrz,
sum(case when res.cod_ordem_producao like 'LQZ%' then 1 else 0 end) as LQZ,
sum(case when res.cod_ordem_producao like 'LQRW%' then 1 else 0 end) as lqrw,
sum(case when res.cod_ordem_producao like 'LQW%' then 1 else 0 end) as LQW,
sum(case when res.cod_ordem_producao like 'LQ%' then 1 else 0 end) as Lq,
sum(case when res.cod_ordem_producao like 'LQR%' then 1 else 0 end) as LQR
from QT_QTS.RES_TUBO_REVENIMENTO2 res, QT_QTS.PLA_ORDEM_PRODUCAO pla
where res.COD_ORDEM_PRODUCAO = pla.COD_ORDEM_PRODUCAO
and res.DTH_CRIACAO_REG >= :dthini
and res.DTH_CRIACAO_REG <=:dthfim
group by pla.DSC_ACO)
Vous pouvez utiliser une simple requête comme celle-ci pour obtenir le résultat pour lqr% code> prédicat que vous demandez dans votre question
select sum(lqx), sum(lqp), sum(lqt), sum(lqrt), sum(lqrz), sum(lqz), sum(lqrw), sum(lqw), sum(lq) , sum(lqr) from (select pla.DSC_ACO, sum(case when res.cod_ordem_producao like 'LQX%' then 1 else 0 end) as lqx, sum(case when res.cod_ordem_producao like 'LQP%' then 1 else 0 end) as lqp, sum(case when res.cod_ordem_producao like 'LQT%' then 1 else 0 end) as LQT, sum(case when res.cod_ordem_producao like 'LQRT%' then 1 else 0 end) as lqrt, sum(case when res.cod_ordem_producao like 'LQRZ%' then 1 else 0 end) as lqrz, sum(case when res.cod_ordem_producao like 'LQZ%' then 1 else 0 end) as LQZ, sum(case when res.cod_ordem_producao like 'LQRW%' then 1 else 0 end) as lqrw, sum(case when res.cod_ordem_producao like 'LQW%' then 1 else 0 end) as LQW, sum(case when res.cod_ordem_producao like 'LQ%' then 1 else 0 end) as Lq, sum(case when res.cod_ordem_producao like 'LQR%' then 1 else 0 end) as LQR from QT_QTS.RES_TUBO_REVENIMENTO2 res, QT_QTS.PLA_ORDEM_PRODUCAO pla where res.COD_ORDEM_PRODUCAO = pla.COD_ORDEM_PRODUCAO and res.DTH_CRIACAO_REG >= :dthini and res.DTH_CRIACAO_REG <=:dthfim group by pla.DSC_ACO) as values
Utilisez une expression de table commune pour organiser les données souhaitées, alors sélectionnez-en simplement avec une simple sommation. Le CTE dans la clause avec la clause vous permettra de choisir à partir de celui-ci comme si c'était une table normale.
WITH temp_table AS (
select pla.DSC_ACO,
case when res.cod_ordem_producao like 'LQX%' then 1 else 0 end as LQX,
case when res.cod_ordem_producao like 'LQP%' then 1 else 0 end as LQP,
case when res.cod_ordem_producao like 'LQT%' then 1 else 0 end as LQT,
case when res.cod_ordem_producao like 'LQRT%' then 1 else 0 end as LQRT,
case when res.cod_ordem_producao like 'LQRZ%' then 1 else 0 end as LQRZ,
case when res.cod_ordem_producao like 'LQZ%' then 1 else 0 end as LQZ,
case when res.cod_ordem_producao like 'LQRW%' then 1 else 0 end as LQRW,
case when res.cod_ordem_producao like 'LQW%' then 1 else 0 end as LQW,
case when res.cod_ordem_producao like 'LQR%' then 1 else 0 end as LQR,
case when res.cod_ordem_producao like 'LQ%' then 1 else 0 end as LQ
from QT_QTS.RES_TUBO_REVENIMENTO2 res, QT_QTS.PLA_ORDEM_PRODUCAO pla
where res.COD_ORDEM_PRODUCAO = pla.COD_ORDEM_PRODUCAO
and res.DTH_CRIACAO_REG >= :dthini
and res.DTH_CRIACAO_REG <= :dthfim)
SELECT SUM(LQ) AS LQ_SUM FROM temp_table
Merci pour l'aide!
fournir votre sortie attendue au format de tableau
Vous seriez double comptage
LQ code> - cela semblerait déjà avoir les informations que vous voulezConseil d'aujourd'hui: utilisez toujours la syntaxe code> joindre code> code>. Plus facile à écrire (sans erreur), plus facile à lire et à entretenir, et plus facile à convertir en jointure extérieure si nécessaire!
Merci pour le conseil!