none
Como fazer um select com 3 colunas RRS feed

  • Pergunta

  • Boa tarde, 

    Possuo uma tabela SOLICITACAO, que tem as seguintes colunas:
    PRIORIDADE | STATUS | DT_ABERTURA | DURACAO

    Tenho 3 selects, cada um me traz:

    1: Quantidade de solicitações onde PRIORIDADE = 'baixa', STATUS = 'fechado', DT_ABERTURA ENTRE 01/07/2012 e 31/07/2012, DURACAO = 1 

    2: Quantidade de solicitações onde PRIORIDADE = 'baixa', STATUS = 'fechado', DT_ABERTURA ENTRE 01/07/2012 e 31/07/2012, DURACAO = 2 

    1: Quantidade de solicitações onde PRIORIDADE = 'baixa', STATUS = 'fechado', DT_ABERTURA ENTRE 01/07/2012 e 31/07/2012, DURACAO > 2

    O SELECT ESTÁ PRONTO:

    SELECT COUNT(PRIORIDADE) AS [1DIA]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO <= 1
    		
    SELECT COUNT(PRIORIDADE) AS [2DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 1 AND DURACAO <= 10
    		
    SELECT COUNT(PRIORIDADE) AS [+ DE 2 DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 10

    Porém, eu gostaria de fazer um select só, que trouxesse todas essas informações, assim:
    _____________________________
    |   1DIA   |   2DIAS   |   + DE 2 DIAS   | 
    |      3     |       4       |            2           |

    ABRAÇO

    quinta-feira, 26 de julho de 2012 19:07

Respostas

  • coloque um TOP 1

    SELECT TOP 1 (SELECT COUNT(PRIORIDADE) AS [1DIA]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO <= 1) As 1 DIA, (		
    SELECT COUNT(PRIORIDADE) AS [2DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 1 AND DURACAO <= 10) AS 2DIA, 
    		(
    SELECT COUNT(PRIORIDADE) AS [+ DE 2 DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 10) AS MAISDE2DIAS FROM SOLICITACAO



    Se a sugestão resolver o problema, favor marcar como Resposta.

    • Marcado como Resposta Leonardo D'Amato quinta-feira, 26 de julho de 2012 20:48
    quinta-feira, 26 de julho de 2012 20:35

Todas as Respostas

  • SELECT (SELECT COUNT(PRIORIDADE) AS [1DIA]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO <= 1) As 1 DIA, (		
    SELECT COUNT(PRIORIDADE) AS [2DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 1 AND DURACAO <= 10) AS 2DIA, 
    		(
    SELECT COUNT(PRIORIDADE) AS [+ DE 2 DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 10) AS MAISDE2DIAS FROM SOLICITACAO



    Se a sugestão resolver o problema, favor marcar como Resposta.


    • Editado Lucas_Santos quinta-feira, 26 de julho de 2012 19:39
    quinta-feira, 26 de julho de 2012 19:39
  • Lucas,

    Trouxe o resultado certinho, porém, ele trouxe muitas linhas com o mesmo resultado.

    Porque assim: Tenho uma solicitação de prioridade baixa no 1DIA, 0 solicitações de prioridade baixa no 2DIAS e 2 solicitações de prioridade baixa no MAIS DE 2 DIAS.

    O que ele precisa me trazer é:

    _______________________
    1DIA | 2DIAS | MAISDE2DIAS|
       1   |     0     |         2           |

    porém, ele está trazendo assim:

    _______________________
    1DIA | 2DIAS | MAISDE2DIAS|
       1   |     0     |         2           |

       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |
       1   |     0     |         2           |

    Abraço e obrigado

    quinta-feira, 26 de julho de 2012 20:28
  • coloque um TOP 1

    SELECT TOP 1 (SELECT COUNT(PRIORIDADE) AS [1DIA]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO <= 1) As 1 DIA, (		
    SELECT COUNT(PRIORIDADE) AS [2DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 1 AND DURACAO <= 10) AS 2DIA, 
    		(
    SELECT COUNT(PRIORIDADE) AS [+ DE 2 DIAS]
    FROM SOLICITACAO
    WHERE	PRIORIDADE = 'Baixa' 
    		AND 
    		STATUS = 'Fechado' 
    		AND 
    		DT_ABERTURA BETWEEN '2012-07-01' AND '2012-07-31'
    		AND
    		DURACAO > 10) AS MAISDE2DIAS FROM SOLICITACAO



    Se a sugestão resolver o problema, favor marcar como Resposta.

    • Marcado como Resposta Leonardo D'Amato quinta-feira, 26 de julho de 2012 20:48
    quinta-feira, 26 de julho de 2012 20:35