Advertisement
hevertonfreitas

sql monstra

Sep 2nd, 2015
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.14 KB | None | 0 0
  1. SELECT    
  2.     id,
  3.     vacina,
  4.     qtde_entradas,
  5.     qtde_saidas AS saidas,
  6.     qtde_imunos AS imunizacaos,
  7.     COALESCE(qtde_saidas, 0) + COALESCE(qtde_imunos, 0) AS qtde_saidas,
  8.     COALESCE(qtde_entradas, 0) - (COALESCE(qtde_saidas, 0) + COALESCE(qtde_imunos, 0)) AS qtde_total,
  9.     valor_medio AS valor_unitario,
  10.     COALESCE(qtde_imunos, 0) * COALESCE(valor_medio, 0) AS total
  11. FROM (
  12.     SELECT
  13.         Vacina.id,
  14.         Vacina.nome || ' - ' || Laboratorio.nome AS vacina,
  15.         SUM((SELECT SUM(Entrada.quantidade) FROM (
  16.             SELECT
  17.                 Itensentradasvacina.lotesvacina_id,
  18.                 SUM(Itensentradasvacina.quantidade) AS quantidade,
  19.                 Entradasvacina.unidade_id,
  20.                 Entradasvacina.data_entrada
  21.             FROM public.itensentradasvacinas Itensentradasvacina
  22.             INNER JOIN public.entradasvacinas Entradasvacina ON Itensentradasvacina.entradasvacina_id = Entradasvacina.id
  23.             WHERE Entradasvacina.STATUS = TRUE
  24.             GROUP BY Itensentradasvacina.lotesvacina_id, Entradasvacina.unidade_id, Entradasvacina.data_entrada
  25.         ) AS Entrada WHERE Entrada.lotesvacina_id = Lotesvacina.id)) AS qtde_entradas,
  26.         SUM((SELECT SUM(Saida.quantidade) FROM (
  27.             SELECT
  28.                 Itenssaidasvacina.lotesvacina_id,
  29.                 SUM(Itenssaidasvacina.quantidade) AS quantidade,
  30.                 Saidasvacina.unidade_id,
  31.                 Saidasvacina.DATA
  32.             FROM public.itenssaidasvacinas Itenssaidasvacina
  33.             LEFT JOIN public.saidasvacinas Saidasvacina ON Itenssaidasvacina.saidasvacina_id = Saidasvacina.id
  34.             WHERE Saidasvacina.STATUS = TRUE
  35.             GROUP BY Itenssaidasvacina.lotesvacina_id, Saidasvacina.unidade_id, Saidasvacina.DATA
  36.         ) AS Saida WHERE Saida.lotesvacina_id = Lotesvacina.id)) AS qtde_saidas,
  37.         SUM((SELECT SUM(Imuno.quantidade) FROM (
  38.             SELECT
  39.                 Dosesimunizacao.lotesvacina_id,
  40.                 Dosesimunizacao.valor_unitario,
  41.                 COUNT(Dosesimunizacao.id) AS quantidade,
  42.                 Imunizacao.unidade_id,
  43.                 Imunizacao.DATA
  44.             FROM public.doses_imunizacaos Dosesimunizacao
  45.             JOIN public.imunizacaos Imunizacao ON Dosesimunizacao.imunizacao_id = Imunizacao.id
  46.             JOIN public.lotesvacinas Lotesvacina ON Dosesimunizacao.lotesvacina_id = Lotesvacina.id
  47.             JOIN public.vacinas Vacina ON Lotesvacina.vacina_id = Vacina.id
  48.             JOIN public.formaapresentacaos Formaapresentacao ON Vacina.formaapresentacao_id = Formaapresentacao.id
  49.             WHERE Formaapresentacao.tipo = '1'::bpchar AND Imunizacao.STATUS = TRUE
  50.             GROUP BY Dosesimunizacao.lotesvacina_id, Imunizacao.unidade_id, Imunizacao.DATA, Dosesimunizacao.valor_unitario
  51.         ) AS Imuno WHERE Imuno.lotesvacina_id = Lotesvacina.id)) AS qtde_imunos,
  52.         SUM((SELECT AVG(Imuno.valor_unitario) FROM (
  53.             SELECT
  54.                 Dosesimunizacao.lotesvacina_id,
  55.                 Dosesimunizacao.valor_unitario,
  56.                 COUNT(Dosesimunizacao.id) AS quantidade,
  57.                 Imunizacao.unidade_id,
  58.                 Imunizacao.DATA
  59.             FROM public.doses_imunizacaos Dosesimunizacao
  60.             JOIN public.imunizacaos Imunizacao ON Dosesimunizacao.imunizacao_id = Imunizacao.id
  61.             JOIN public.lotesvacinas Lotesvacina ON Dosesimunizacao.lotesvacina_id = Lotesvacina.id
  62.             JOIN public.vacinas Vacina ON Lotesvacina.vacina_id = Vacina.id
  63.             JOIN public.formaapresentacaos Formaapresentacao ON Vacina.formaapresentacao_id = Formaapresentacao.id
  64.             WHERE Formaapresentacao.tipo = '1'::bpchar AND Imunizacao.STATUS = TRUE
  65.             GROUP BY Dosesimunizacao.lotesvacina_id, Imunizacao.unidade_id, Imunizacao.DATA, Dosesimunizacao.valor_unitario
  66.         ) AS Imuno WHERE Imuno.lotesvacina_id = Lotesvacina.id)) AS valor_medio
  67.     FROM public.lotesvacinas AS Lotesvacina
  68.     INNER JOIN public.vacinas AS Vacina ON Lotesvacina.vacina_id = Vacina.id
  69.     LEFT JOIN public.laboratorios AS Laboratorio ON Vacina.laboratorio_id = Laboratorio.id
  70.     GROUP BY Vacina.id, Vacina.nome, Laboratorio.nome
  71. ) sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement