none
juntar dois select RRS feed

  • Pergunta

  • Boas

    Como junto estes dois Select?

    select * , 'semana' = DATENAME(WK,CONVERT(datetime,CAST(data as varchar(10)),103)), 'ano' = DATENAME(YYYY,CONVERT(datetime,CAST(data as varchar(10)),103)) from dados where datas like '%-%'
    
    Select func.identificador, func.nome, Sum (Cast(Replace(dados.F8, ',','.') as float)) as [serviços]
    From func, dados
    where dados.F5 = func.numero
    AND ISNUMERIC(dados.F8) = 1 
    group by func.identificador, func.nome
    Obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    segunda-feira, 2 de abril de 2012 09:34

Respostas

  • Olá Flashed, pelo visto tua primeira consulta é feita na tabela dados que já existe no segundo select, facilitando a inclusão do primeiro.

    Tenta dessa forma:

    Select func.identificador, func.nome, Sum (Cast(Replace(dados.F8, ',','.') as float)) as [serviços], 'semana', DATENAME(WK,CONVERT(datetime,CAST(data as varchar(10)),103)), 'ano', DATENAME(YYYY,CONVERT(datetime,CAST(data as varchar(10)),103))
    From func, dados
    where dados.F5 = func.numero
    AND ISNUMERIC(dados.F8) = 1 
    and datas like '%-%'
    group by func.identificador, func.nome

    Espero que ajude.

    Vlew.


    --
    Marcus Vinícius Bittencourt
    blog: isqlserver.wordpress.com
    www.sqlserverRS.com.br

    • Marcado como Resposta Jonas São Paulo segunda-feira, 2 de abril de 2012 13:49
    segunda-feira, 2 de abril de 2012 13:39
  • Flashed,

    No where você colocaria assim:

    DATENAME(WK,CONVERT(datetime,CAST(data as varchar(10)),103)) = 6

    Abçs,

    Adriano

    • Marcado como Resposta Jonas São Paulo segunda-feira, 2 de abril de 2012 14:30
    segunda-feira, 2 de abril de 2012 14:14

Todas as Respostas

  • Flashed,

    Voce quer juntar no sentido de ficar uma abaixo da outra no mesmo ResultSet? Se sim, utilize os comando UNION ou UNION ALL, porem os mesmos possuem algumas restrições:

    - Os 2 selects devem contem os mesmos numeros de colunas

    - Cada coluna no select 1 e 2, devem contem o mesmo dataType, ou seja, é impossivel unir um VARBINARY com um INT

    Agora, se voce quer fazer agregação de coluna, ou seja, agregar tal informação do select 2 ao select 1 por exemplo, voce deve utilizar algum operador JOIN.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 2 de abril de 2012 11:38
    Moderador
  • Boas

    O que preciso é de primeiro fazer o que está no primeiro select para depois o segundo ir trabalhar sobre o que foi criado por o primeiro select.

    Eu ainda não percebo bem o sql mas pelo que tenho aprendido o que o primeiro select faz é criar uma tabela temporaria, né?

    Se sim, preciso que o segundo select vá trabalhar com os dados dessa tabela temporaria....

    perceberam alguma coisa? :)

    Desde já obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    segunda-feira, 2 de abril de 2012 12:07
  • Flashed,

    Não existe comando de criar tabela temporaria não, pelo menos no codigo que voce postou....

    Não entendi o que exatamente voce quer....


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 2 de abril de 2012 12:17
    Moderador
  • O objectivo era fazer os dois select num só select.

    no primeiro código que postei ele vai há tabela e cria duas colunas. Uma com a semana e outra com o ano da data que estiver na coluna "data".

    Feito isto preciso que o segundo código trabalhe com essas duas colunas. Porque neste momento estou a trabalhar com a tabela "dados" mas sem as duas colunas correspondentes ha semana e ano.

    Entendeu?

    obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    segunda-feira, 2 de abril de 2012 13:17
  • Olá Flashed, pelo visto tua primeira consulta é feita na tabela dados que já existe no segundo select, facilitando a inclusão do primeiro.

    Tenta dessa forma:

    Select func.identificador, func.nome, Sum (Cast(Replace(dados.F8, ',','.') as float)) as [serviços], 'semana', DATENAME(WK,CONVERT(datetime,CAST(data as varchar(10)),103)), 'ano', DATENAME(YYYY,CONVERT(datetime,CAST(data as varchar(10)),103))
    From func, dados
    where dados.F5 = func.numero
    AND ISNUMERIC(dados.F8) = 1 
    and datas like '%-%'
    group by func.identificador, func.nome

    Espero que ajude.

    Vlew.


    --
    Marcus Vinícius Bittencourt
    blog: isqlserver.wordpress.com
    www.sqlserverRS.com.br

    • Marcado como Resposta Jonas São Paulo segunda-feira, 2 de abril de 2012 13:49
    segunda-feira, 2 de abril de 2012 13:39
  • funcionou, falta-me e um pormenor.

    Como faço referencia á coluna criada no select? 

    Se fizer

    where semana = '6' ele dá erro.

    obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    segunda-feira, 2 de abril de 2012 13:50
  • Flashed,

    No where você colocaria assim:

    DATENAME(WK,CONVERT(datetime,CAST(data as varchar(10)),103)) = 6

    Abçs,

    Adriano

    • Marcado como Resposta Jonas São Paulo segunda-feira, 2 de abril de 2012 14:30
    segunda-feira, 2 de abril de 2012 14:14
  • great

    Muito obrigado pessoal, com a dica do adriano meti o primeiro select no where, agora faz sentido :)

    Obrigado a todos


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    segunda-feira, 2 de abril de 2012 14:31