SQL - Agregar Ultimo Proceso en Tabla Temporal

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 14 puestos en SQL (en relación al último mes)
Gráfica de SQL

Agregar Ultimo Proceso en Tabla Temporal

Publicado por Jose (7 intervenciones) el 15/01/2020 18:27:36
Hola Amigos, si es posible, por favor su ayuda:
Tengo la sentencia en sql descrita más abajo. lo que necesito es que me genere una nueva columna indicando el último proceso para un grupo de dato, +/- de la siguiente manera:

NumOrcamento OrdenSecuenciaComercial UltimoProceso
AAA 1-COMERCIAL 2-FACTIBILIDAD TECNICA
AAA 2-FACTIBILIDAD TECNICA 2-FACTIBILIDAD TECNICA
BBB 5-GENERAR PRINT 7-DESARROLLO PRODUCTO
BBB 6-COMERCIAL 7-DESARROLLO PRODUCTO
BBB 7-DESARROLLO PRODUCTO 7-DESARROLLO PRODUCTO
CC 3-GENERAR PDF 4-COMERCIAL
CC 4-COMERCIAL 4-COMERCIAL


La query:
SET NOCOUNT ON;
if OBJECT_ID('tempdb.dbo.#PresupuestoConSecuencia','U') is not null drop table dbo.#PresupuestoConSecuencia;
SELECT NumOrcamento, CodCancelamento, NumOrdem,
Case
when usr_Classtrabajo in ('Producto Modificado') Then 'Modificado'
when usr_Classtrabajo in ('Producto Nuevo (Primera Producción)') Then 'Nuevo'
when usr_Classtrabajo in ('Repetición') Then 'Repetición'

Else 'OTRO' end as TipoPdto,

Case When NumOrcOriginal = '' then NumOrcamento Else NumOrcOriginal End NumOrcOriginal,(DtEmissao) Fecha_Inicio,
CASE
WHEN Nome='FRANCISCO.DELAFUENTE' THEN 'FRANCISCO DE LA FUENTE'
WHEN Nome='VALERIA.DELVALLE' THEN 'VALERIA DEL VALLE'
ELSE replace(upper(Nome),'.',' ') END Vendedor, (NomeCliente)Cliente, (DtOcor) DtOcor2Fecha_Termino, (PrecoMedio)Precio$,
case when IdMoeda in ('2') then ('760')
when IdMoeda in ('5') then ('830')
else IdMoeda end as Cambio,

SecuenciaPuntoDeControlCerrados = Row_number() over( partition by Case When NumOrcOriginal = '' then NumOrcamento Else NumOrcOriginal End order by DtOcor),
Case When LG.Texto like '%COMERCIAL%' Then 'COMERCIAL' Else replace(LG.Texto, 'LIBERADO Ponto de Controle - ','') End Texto2

into #PresupuestoConSecuencia
FROM MetricsPROD.dbo.OrcHdr OH
inner join MetricsPROD.dbo.LogMsgs LG ON OH.NumOrcamento = LG.IdObj
inner join MetricsPROD.dbo.Vendedores VE ON OH.CodVendedor = VE.CodVendedor

where Entidade = 'ROT' AND CodRoteiro not in ('COTIZACIÓN') AND CodRoteiro not in ('DESARROLLO AR') AND CodRoteiro not in ('DIMENSIONADO') and CodRoteiro not in ('')
AND CodRoteiro not in ('EXTRUSION') AND CodRoteiro not in ('MAQUILA A TERCEROS') AND CodRoteiro not in ('MUESTRA SIN VALOR')
and year(DtEmissao) >= 2019
and month(DtEmissao) >= 1
and texto not like '%CANCELADA%'
and texto not like '%BLOQUEADO%'
and texto not like '%INCLUSÃO%'

order by NumOrcamento, DtOcor2Fecha_Termino

if OBJECT_ID('tempdb.dbo.#SecuenciaComercial','U') is not null drop table dbo.#SecuenciaComercial;
select * into #SecuenciaComercial from
(
select *, SecuenciaComercial = Row_number() over( partition by NumOrcOriginal order by DtOcor2Fecha_Termino) from #PresupuestoConSecuencia
where Texto2='COMERCIAL'
union
select *, '' SecuenciaComercial from #PresupuestoConSecuencia
where Texto2<>'COMERCIAL'
) X

select*,

case
when Texto2='COMERCIAL' and SecuenciaComercial='1' Then '1-COMERCIAL'
when Texto2='FACTIBILIDAD TECNICA' Then '2-FACTIBILIDAD TECNICA'
when Texto2='GENERAR PDF' Then '3-GENERAR PDF'
when Texto2='COMERCIAL' and SecuenciaComercial='2' Then '4-COMERCIAL'
when Texto2='GENERAR PRINT' Then '5-GENERAR PRINT'
when Texto2='COMERCIAL' and SecuenciaComercial='3' Then '6-COMERCIAL'
when Texto2='DESARROLLO PRODUCTO' Then '7-DESARROLLO PRODUCTO'
when Texto2='APROBAR GERENTE COM' Then '8-APROBAR GERENTE COM'
when Texto2='SOLICITAR CLISSÉ' Then '9-SOLICITAR CLISSÉ'
when Texto2='RECEPCIÓN CLISSÉ' Then '10-RECEPCIÓN CLISSÉ'
End as OrdenSecuenciaComercial

from #SecuenciaComercial
where CodCancelamento='0' and NumOrdem=''
order by NumOrcamento, OrdenSecuenciaComercial













Ultimo-Dato
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder