none
Resolver um select RRS feed

  • Pergunta

  • Pessoal

    tenho um select que retorna as seguintes colunas (culture, order, mitif)

    CULTURE              ORDER                                       MITIF
    ----------------------------------------------------------------------------
    NULL                   MAPEAMENTO & GIS                      NULL
    NULL                   AGRICULTURA DE PRECISÃO         NULL
    NULL                   DADOS VETORIAIS                       NULL
    NULL                   NULL                                            TOPOGRAFIA
    NULL                   NULL                                            ENERGIA ELÉTRICA
    ALGODÃO           NULL                                             NULL


    Preciso colocar numa unica linha os primeiros registros que não forem nulos. Ficaria assim


    CULTURE              ORDER                                       MITIF
    ----------------------------------------------------------------------------
    ALGODÃO            MAPEAMENTO & GIS                     TOPOGRAFIA

    Alguém tem uma idéia pra me ajudar????

    Obrigado!


    Valmir Lima
    terça-feira, 22 de dezembro de 2009 16:20

Todas as Respostas

  • Boa tarde Valmir, segue sugestão:

    -- CRIANDO TABELA TEMPORÁRIA
    DECLARE @TB TABLE (CULTURE VARCHAR(50), [ORDER] VARCHAR(50), MITIF VARCHAR(50))
    
    -- POPULANDO A TABELA
    INSERT @TB 
    SELECT NULL      ,'MAPEAMENTO & GIS',       NULL UNION ALL
    SELECT NULL      ,'AGRICULTURA DE PRECISÃO',NULL UNION ALL
    SELECT NULL      ,'DADOS VETORIAIS',        NULL UNION ALL
    SELECT NULL      ,NULL                      ,'TOPOGRAFIA' UNION ALL
    SELECT NULL      ,NULL                      ,'ENERGIA ELÉTRICA' UNION ALL
    SELECT 'ALGODÃO' ,NULL                      ,NULL 
    
    -- SELECT COM TODOS OS REGISTROS
    SELECT CULTURE,[ORDER],MITIF FROM @TB
    
    -- SELECT SÓ COM OS PRIMEIROS REGISTROS NÃO NULOS
    SELECT 
        CULTURE = (SELECT TOP(1) CULTURE FROM @TB WHERE CULTURE IS NOT NULL),
        [ORDER] = (SELECT TOP(1) [ORDER] FROM @TB WHERE [ORDER] IS NOT NULL),
        MITIF   = (SELECT  TOP(1) MITIF   FROM @TB WHERE MITIF IS NOT NULL)
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    terça-feira, 22 de dezembro de 2009 17:39
  • Opa, tudo bem Marcelino.

    O grande problema é que existem milhares de tipos para cada categorias que eu mencionei, então ficaria inviável riar uma tabela como esta. como eu falei, o que foi apresentado é apenas o resultado do select.

    Mas obrigado pela Ajuda!
    Valmir Lima
    terça-feira, 22 de dezembro de 2009 17:57
  • Valmir não sugeri q criasse uma tabela, eu apenas declarei uma tabela temporária e populei com os registros, para fazer uma demostração.

    tente aprovetar essa parte do código.

    SELECT DISTINCT
        "ID_do_Grupo caso tenha",
        [CULTURE] = (SELECT TOP(1) [CULTURE] FROM "Sua Tabela" WHERE [CULTURE] IS NOT NULL AND "ID_do_Grupo caso tenha" = t1."ID_do_Grupo caso tenha"),
        [ORDER]   = (SELECT TOP(1) [ORDER]   FROM "Sua Tabela" WHERE [ORDER]   IS NOT NULL AND "ID_do_Grupo caso tenha" = t1."ID_do_Grupo caso tenha"),
        [MITIF]   = (SELECT TOP(1) [MITIF]   FROM "Sua Tabela" WHERE [MITIF]   IS NOT NULL AND "ID_do_Grupo caso tenha" = t1."ID_do_Grupo caso tenha")
    FROM
        "Sua Tabela" as T1

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    terça-feira, 22 de dezembro de 2009 18:22