none
Como melhorar uma SP RRS feed

  • Pergunta

  • Pessoal,

    Seguinte, preciso unificar 2 SP que tem um tamanho pra lá de consideravel. =)

    Vamos ao seguinte cenário:

    Sp[A]
    Sp[B]

    A Sp[A] tem um SELECT com 10 tabelas, com left e inner join.
    Tanto a [A] quanto a [B] são bem complexas e exigem um consumo legal do servidor.

    Daí a questão, preciso de um relatório unificado de [A] e [B]..

    Qual a melhor forma para executar?

    Obrigado.

    quinta-feira, 13 de junho de 2013 11:44

Respostas

Todas as Respostas

  • Deleted
    quinta-feira, 13 de junho de 2013 14:01
  • Eu poderia te passar sem problemas, mas antes preciso resolver esse erro do UNION ALL

    All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

    quinta-feira, 13 de junho de 2013 14:07
  • Deleted
    quinta-feira, 13 de junho de 2013 14:14
  • José_Diz,

    Pode parecer que não, mas as consultas tem sim 26 campos cada uma.

    No entanto a SP[A] não retorna a quantidade certa de campos, tive que criar os campos com '' as CAMPO_IGUAL_DE_SP[B].

    quinta-feira, 13 de junho de 2013 14:21
  • Deleted
    quinta-feira, 13 de junho de 2013 14:58
  • Vejam como as SP estão aqui...

    SELECT
    a.*, NULL AS CODANEXO,
    (CASE WHEN (ISNULL(TIPL,'') IN('P','N')) THEN 'SEM CORRESPONDENTE'
    WHEN (ISNULL(TIPIA,'') IN('','F')) THEN c.NOMFILIAL
    ELSE b.NOMFORN END) AS RESP
    NULL AS AVALIACAO,
    NULL AS ARQUIVO
    FROM #T1 a
    LEFT JOIN F35 b WITH(NOLOCK) ON b.CODFORN = a.REFERATD AND a.TIPL = 'C'
    LEFT JOIN R01 c WITH(NOLOCK) ON a.CODFILIAL = c.CODFILIAL
    LEFT JOIN A06 d WITH(NOLOCK) ON d.CODAGENDA = a.REFERATD AND a.TIP = 'F'
    LEFT JOIN S01 e WITH(NOLOCK) ON d.CODUSERRECEP = e.ID
    ORDER BY a.DATAFATAL DESC

    SELECT
    a.*, NULL AS CODANEXO,
    (CASE WHEN (ISNULL(TIPL,'') IN('P','N')) THEN 'SEM CORRESPONDENTE'
    WHEN (ISNULL(TIPIA,'') IN('','F')) THEN c.NOMFILIAL
    ELSE b.NOMFORN END) AS RESP
    NULL AS AVALIACAO,
    NULL AS ARQUIVO
    FROM #T2 a
    LEFT JOIN F35 b WITH(NOLOCK) ON b.CODFORN = a.REFERATD AND a.TIPL = 'C'
    LEFT JOIN R01 c WITH(NOLOCK) ON a.CODFILIAL = c.CODFILIAL
    LEFT JOIN A06 d WITH(NOLOCK) ON d.CODAGENDA = a.REFERATD AND a.TIP = 'F'
    LEFT JOIN S01 e WITH(NOLOCK) ON d.CODUSERRECEP = e.ID
    ORDER BY a.DATAFATAL DESC

    select * from #t1

    union all

    select * from #t2

    quinta-feira, 13 de junho de 2013 17:19
  • Deleted
    quinta-feira, 13 de junho de 2013 21:12