Usuário com melhor resposta
juntar dois select

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
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
-
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
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 -
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
-
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 -
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
-
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
-
-
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
-