none
Unir vários selects RRS feed

  • Pergunta

  • Boa noite pessoal,

    Tenho os seguintes selects:

    - Select 1

    SELECT
       ISNULL(CONVERT(varchar, S.SolData, 103), 00) + ' ' + ISNULL(CONVERT(varchar, S.SolData, 108), '') 'Data de Abertura',
       ISNULL(CONVERT(varchar, S.Solvencimento, 103), 00) + ' ' + ISNULL(CONVERT(varchar, S.Solvencimento, 108), '') 'Data de Vencimento',
       R.Usunome 'Responsavel',
       CASE S.SolStatus
           WHEN 9 THEN 'Concluído'
           ELSE 'Não iniciado'
       END 'Status',
       M.DsModulo 'Sistema'    
    FROM Solicitacao S
       LEFT JOIN MacroProcesso MP
           ON MP.MacProcID = S.MacProcID
       LEFT JOIN Modulo M
           ON M.ModID = S.ModID
       LEFT JOIN usuario R
           ON R.usuid = S.UsuIDResponsavel    
    WHERE MP.DsMacProcesso = 'TAREFA'
       AND S.SOLSTATUS IN (5, 0, 1)


    - Select 2

    SELECT
       R.Usunome 'Responsavel',
       COUNT(S.SolID) 'Qtd',
       RANK() OVER (ORDER BY COUNT(S.SolID) DESC) AS 'Rank'    
    FROM Solicitacao S
       LEFT JOIN MacroProcesso MP
           ON MP.MacProcID = S.MacProcID
       LEFT JOIN Modulo M
           ON M.ModID = S.ModID
       LEFT JOIN usuario R
           ON R.Usuid = S.UsuIDResponsavel    
    WHERE MP.DsMacProcesso = 'TAREFA'
       AND S.SOLdata BETWEEN (CONVERT(char(10), GETDATE(), 103) + ' 00:00:00') AND (CONVERT(char(10), GETDATE(), 103) + ' 23:59:59')
    GROUP BY R.Usunome


    - Select 3

    SELECT
       R.Usunome 'Responsavel',
       COUNT(S.SolID) 'Qtd',
       RANK() OVER (ORDER BY COUNT(S.SolID) DESC) AS 'Rank'    
    FROM Solicitacao S
       LEFT JOIN MacroProcesso MP
           ON MP.MacProcID = S.MacProcID
       LEFT JOIN Modulo M
           ON M.ModID = S.ModID
       LEFT JOIN usuario R
           ON R.usuid = S.UsuIDResponsavel    
    WHERE MP.DsMacProcesso = 'TAREFA'
       AND S.SolDataFechamento BETWEEN (CONVERT(char(10), GETDATE(), 103) + ' 00:00:00') AND (CONVERT(char(10), GETDATE(), 103) + ' 23:59:59')
       AND S.SolDataFechamento IS NOT NULL    
    GROUP BY R.Usunome


    - Select 4

    SELECT
        R.Usunome 'Responsavel',
       AVG(CONVERT(decimal, DATEDIFF(DAY, S.SolData, S.SolDataFechamento))) 'MED Dias',
       (CONVERT(time(0), (CAST(FLOOR(AVG(S.TempoGastoTotal) / 60) AS varchar) + ':' + RIGHT('00' + CAST(FLOOR((AVG(S.TempoGastoTotal) % 60)) AS varchar), 2)), 120)) 'MED HHMMSS',
       RANK() OVER (ORDER BY AVG(CONVERT(decimal, DATEDIFF(DAY, S.SolData, S.SolDataFechamento))) ASC) AS 'Rank'    
    FROM Solicitacao S
    LEFT JOIN MacroProcesso MP
       ON MP.MacProcID = S.MacProcID
    LEFT JOIN Modulo M
       ON M.ModID = S.ModID
    LEFT JOIN usuario R
       ON R.usuid = S.UsuIDResponsavel    
    WHERE MP.DsMacProcesso = 'TAREFA'
       AND S.SolDataFechamento BETWEEN (CONVERT(char(10), GETDATE() - DAY(GETDATE()) + 1, 103) + ' 00:00:00') AND (DATEADD(DD, -DAY(DATEADD(M, 1, GETDATE())), DATEADD(M, 1, GETDATE())) + ' 23:59:59')
       AND S.SolDataFechamento IS NOT NULL    
    GROUP BY R.Usunome


    - Select 5

    SELECT
       R.Usunome 'Responsavel',
       COUNT(S.SolID) 'Qtd',
       RANK() OVER (ORDER BY COUNT(S.SolID) DESC) AS 'Rank'    
    FROM Solicitacao S
       LEFT JOIN Complemento Comp
           ON S.SolID = Comp.SolID
       LEFT JOIN TipoComp TpComp
           ON TpComp.CompID = Comp.CompID
       LEFT JOIN MacroProcesso MP
           ON MP.MacProcID = S.MacProcID
       LEFT JOIN Modulo M
           ON M.ModID = S.ModID
       LEFT JOIN usuario R
           ON R.usuid = S.UsuIDResponsavel    
    WHERE MP.DsMacProcesso = 'TAREFA'
       AND Comp.CompDesc = 'SIM'
       AND S.SolDataFechamento BETWEEN (CONVERT(char(10), GETDATE() - DAY(GETDATE()) + 1, 103) + ' 00:00:00') AND (DATEADD(DD, -DAY(DATEADD(M, 1, GETDATE())), DATEADD(M, 1, GETDATE())) + ' 23:59:59')
       AND S.SolDataFechamento IS NOT NULL
    GROUP BY R.Usunome

    O que eu gostaria de fazer é criar uma única tabela com o resultado desses selects, exemplo:

    'Responsavel SQL1' 'Data de Abertura SQL1' 'Data de Vencimento SQL1' 'Qtd SQL2' ''Rank SQL2' 'Qtd SQL3' ''Rank SQL3'  e assim por diante.

    Caso em um retorno de select não contenha informação para o 'Responsavel' a coluna fica varia.

    É possível efetuar este tipo de operação?

    Obrigad

    terça-feira, 12 de julho de 2016 03:16

Respostas

Todas as Respostas