DECLARE @datainicio as DATETIME, @datafim as DATETIME; SET @datainicio = %DataInicio; SET @datafim = %DataFim; select p.data_pedido as data, p.zona, p.mesa, p.pedido, format (p.datahora_pedido,'HH:mm:ss','pt-PT') as hora_pedido, p.centro_prod_origem, p.id_linha, p.familia, p.subfamilia, p.produtoCod, p.produto, cast(p.qtd as INT) as qtd, format (pp.datahora_produzido,'HH:mm:ss','pt-PT') hora_produzido, CONVERT(time(0), DATEADD(SECOND, DATEDIFF(second, p.datahora_pedido, pp.datahora_produzido), 0)) as tempo_prod, format (pr.datahora_pronto,'HH:mm:ss','pt-PT') hora_pronto, CONVERT(time(0), DATEADD(SECOND, DATEDIFF(second, pp.datahora_produzido, pr.datahora_pronto), 0)) as tempo_prep, CONVERT(time(0), DATEADD(SECOND, DATEDIFF(second, p.datahora_pedido, pr.datahora_pronto), 0)) as tempo_ped_prep, format (pe.datahora_entregue,'HH:mm:ss','pt-PT') hora_entregue, CONVERT(time(0), DATEADD(SECOND, DATEDIFF(second, pr.datahora_pronto, pe.datahora_entregue), 0)) as tempo_entrega, CONVERT(time(0), DATEADD(SECOND, DATEDIFF(second, p.datahora_pedido, pe.datahora_entregue), 0)) as tempo_prod_total from ( SELECT cast (hm.datahora as date) as data_pedido,hm.datahora as datahora_pedido, z.descricao as zona, hm.mesa, hm.pedido, hm.evento eventoCod, case when hm.evento = 0 then 'Abertura de Mesa' when hm.evento = 1 then 'Pedido do Produto' when hm.evento = 2 then 'Transferência de Consumo no Zsrest' when hm.evento = 3 then 'Transferência de Centro de Produção (nos monitores)' when hm.evento = 4 then 'Mudança de quantidade do produto no ZSrest' when hm.evento = 5 then 'Anulação de pedido no ZSrest' when hm.evento = 6 then 'Pedido Pronto no Monitor de Cozinha' when hm.evento = 7 then 'Pedido de Conta' when hm.evento = 8 then 'Pagamento' when hm.evento = 9 then 'Pedido Entregue no Monitor de Cozinha' when hm.evento = 10 then 'Anulação de pedido no Monitor de Cozinha' when hm.evento = 11 then 'Recuperação do pedido no Monitor de Cozinha' when hm.evento = 12 then 'Limpar linhas no ZSrest' else 'Desconhecido' end as evento, cpo.descricao as centro_prod_origem, cpd.descricao as centro_prod_destino, cp.descricao as centro_prod_primario, hm.id_linha, f.descricao as familia, sf.descricao as subfamilia, hm.codigo as produtoCod, p.descricao as produto, hm.qtd FROM historico_mesas hm inner join produtos p on p.codigo = hm.codigo and p.cozinha = hm.centro_prod_origem left join centrosprod cp on cp.codigo = p.cozinha left join centrosprod cpo on cpo.codigo = hm.centro_prod_origem left join centrosprod cpd on cpd.codigo = hm.centro_prod_destino left join familias f on f.codigo = p.familia left join subfamilias sf on sf.codigo = p.subfam LEFT JOIN ( SELECT distinct hm.mesa, case when ISNULL(z.codigo, 0) = 0 then pst.zona else z.codigo end as codigo, case when ISNULL(z.codigo, 0) = 0 then (case when ISNULL(zp.descricao, ' ') = ' ' then 'NÃO DEFINIDA' else zp.descricao end ) else z.descricao end as descricao, pst.descricao posto, pst.zona as postoZonaCod, zp.descricao as postoZona FROM historico_mesas hm LEFT JOIN mapamesas mm on mm.numeroobjecto = hm.mesa LEFT JOIN zonas z on z.codigo = mm.zona LEFT JOIN postos pst on pst.codigo = SUBSTRING( (convert(varchar(10),hm.mesa) ), 3 , 2 ) and hm.mesa > 1000 LEFT JOIN zonas zp on zp.codigo = pst.zona WHERE cast (hm.datahora as date) >= @datainicio and cast (hm.datahora as date) <= @datafim ) z on z.mesa = hm.mesa where cast (hm.datahora as date) >= @datainicio and cast (hm.datahora as date) <= @datafim and hm.evento in (1) ) as p left join ( SELECT cast (hm.datahora as date) as data_produzido,hm.datahora as datahora_produzido, hm.mesa, hm.pedido, hm.evento eventoCod, case when hm.evento = 0 then 'Abertura de Mesa' when hm.evento = 1 then 'Pedido do Produto' when hm.evento = 2 then 'Transferência de Consumo no Zsrest' when hm.evento = 3 then 'Transferência de Centro de Produção (nos monitores)' when hm.evento = 4 then 'Mudança de quantidade do produto no ZSrest' when hm.evento = 5 then 'Anulação de pedido no ZSrest' when hm.evento = 6 then 'Pedido Pronto no Monitor de Cozinha' when hm.evento = 7 then 'Pedido de Conta' when hm.evento = 8 then 'Pagamento' when hm.evento = 9 then 'Pedido Entregue no Monitor de Cozinha' when hm.evento = 10 then 'Anulação de pedido no Monitor de Cozinha' when hm.evento = 11 then 'Recuperação do pedido no Monitor de Cozinha' when hm.evento = 12 then 'Limpar linhas no ZSrest' else 'Desconhecido' end as evento, cpo.descricao as centro_prod_origem, cpd.descricao as centro_prod_destino, cp.descricao as centro_prod_primario, hm.id_linha, hm.codigo as produtoCod, p.descricao as produto FROM historico_mesas hm inner join produtos p on p.codigo = hm.codigo and p.cozinha = hm.centro_prod_origem left join centrosprod cp on cp.codigo = p.cozinha left join centrosprod cpo on cpo.codigo = hm.centro_prod_origem left join centrosprod cpd on cpd.codigo = hm.centro_prod_destino where cast (hm.datahora as date) >= @datainicio and cast (hm.datahora as date) <= @datafim and hm.evento in (6) ) as pp on pp.id_linha = p.id_linha left join (SELECT cast (hm.datahora as date) as data_pronto, min(hm.datahora) as datahora_pronto, hm.mesa, hm.pedido, hm.evento eventoCod, case when hm.evento = 0 then 'Abertura de Mesa' when hm.evento = 1 then 'Pedido do Produto' when hm.evento = 2 then 'Transferência de Consumo no Zsrest' when hm.evento = 3 then 'Transferência de Centro de Produção (nos monitores)' when hm.evento = 4 then 'Mudança de quantidade do produto no ZSrest' when hm.evento = 5 then 'Anulação de pedido no ZSrest' when hm.evento = 6 then 'Pedido Pronto no Monitor de Cozinha' when hm.evento = 7 then 'Pedido de Conta' when hm.evento = 8 then 'Pagamento' when hm.evento = 9 then 'Pedido Entregue no Monitor de Cozinha' when hm.evento = 10 then 'Anulação de pedido no Monitor de Cozinha' when hm.evento = 11 then 'Recuperação do pedido no Monitor de Cozinha' when hm.evento = 12 then 'Limpar linhas no ZSrest' else 'Desconhecido' end as evento, cpo.descricao as centro_prod_origem, cpd.descricao as centro_prod_destino, cp.descricao as centro_prod_primario, hm.id_linha, hm.codigo as produtoCod, p.descricao as produto FROM historico_mesas hm inner join produtos p on p.codigo = hm.codigo and p.cozinha = hm.centro_prod_origem left join centrosprod cp on cp.codigo = p.cozinha left join centrosprod cpo on cpo.codigo = hm.centro_prod_origem left join centrosprod cpd on cpd.codigo = hm.centro_prod_destino where cast (hm.datahora as date) >= @datainicio and cast (hm.datahora as date) <= @datafim and hm.evento in (9) group by cast (hm.datahora as date), hm.mesa, hm.pedido, hm.evento, hm.evento, cpo.descricao , cpd.descricao, cp.descricao, hm.id_linha, hm.codigo, p.descricao ) as pr on pr.id_linha = p.id_linha left join ( SELECT cast (hm.datahora as date) as data_entregue, max(hm.datahora) as datahora_entregue, hm.mesa, hm.pedido, hm.evento eventoCod, case when hm.evento = 0 then 'Abertura de Mesa' when hm.evento = 1 then 'Pedido do Produto' when hm.evento = 2 then 'Transferência de Consumo no Zsrest' when hm.evento = 3 then 'Transferência de Centro de Produção (nos monitores)' when hm.evento = 4 then 'Mudança de quantidade do produto no ZSrest' when hm.evento = 5 then 'Anulação de pedido no ZSrest' when hm.evento = 6 then 'Pedido Pronto no Monitor de Cozinha' when hm.evento = 7 then 'Pedido de Conta' when hm.evento = 8 then 'Pagamento' when hm.evento = 9 then 'Pedido Entregue no Monitor de Cozinha' when hm.evento = 10 then 'Anulação de pedido no Monitor de Cozinha' when hm.evento = 11 then 'Recuperação do pedido no Monitor de Cozinha' when hm.evento = 12 then 'Limpar linhas no ZSrest' else 'Desconhecido' end as evento, cpo.descricao as centro_prod_origem, cpd.descricao as centro_prod_destino, cp.descricao as centro_prod_primario, hm.id_linha, hm.codigo as produtoCod, p.descricao as produto FROM historico_mesas hm inner join produtos p on p.codigo = hm.codigo and p.cozinha = hm.centro_prod_origem left join centrosprod cp on cp.codigo = p.cozinha left join centrosprod cpo on cpo.codigo = hm.centro_prod_origem left join centrosprod cpd on cpd.codigo = hm.centro_prod_destino where cast (hm.datahora as date) >= @datainicio and cast (hm.datahora as date) <= @datafim and hm.evento in (9) group by cast (hm.datahora as date), hm.mesa, hm.pedido, hm.evento, hm.evento, cpo.descricao , cpd.descricao, cp.descricao, hm.id_linha, hm.codigo, p.descricao ) as pe on pe.id_linha = p.id_linha