INSERIR NOVOS CAMPOS UMA CONSULTA SQL

JCM0867 23/03/2014 22:52:58
#436431
Boa Noite pessoal,

Tenho uma consulta no SQL server dentro do VB.Net da seguinte maneira:
SqlNovaTabela = [Ô]Select TabelaAtual.Campo1, TabelaAtual.Campo2, 0.00 as Campo3, [ô][ô] as Campo4 Into NovaTabela From TabelaAtual[Ô]

Como faço na Tabela [Ô]NovaTabela[Ô] fique com o campo3= Numeric(10,2) e o Campo4 = varchar(30)

Sei que posso fazer um [Ô]Alter Table[Ô] na Novatabela Criada, mas como faço direto na consulta?

Grato


O ignorante também tem boas idéias, só que não chega perceber
Autor desconhecido

GUIMORAES 24/03/2014 10:01:43
#436440
Não entendi sua pergunta, você quer formatar os valores na consulta?
TUNUSAT 24/03/2014 10:04:12
#436441
JCM0867,

Veja se é isto ... pesquisei:

===============================================================
SQL Server 2012
http://technet.microsoft.com/pt-br/library/hh213505.aspx

SELECT FORMAT( GETDATE(), [ô]dd/MM/yyyy[ô], [ô]en-US[ô] ) AS [ô]DateTime Result[ô]
,FORMAT(123456789,[ô]###-##-####[ô]) AS [ô]Custom Number Result[ô];
===============================================================
http://www.sqlusa.com/bestpractices/pad/
===============================================================

Cheguei a conclusão:

===============================================================
Select Orders.OrderID,
0.00 as Campo3,
REPLICATE([ô]0[ô],11-LEN([ô]0.00[ô])) + [ô].[ô] + right([ô]0.00[ô],2) as Campo3,
REPLICATE([ô] [ô],30-LEN(OrderID)) as Campo4,
CAST(OrderID AS char(30)) as Campo5,
CAST([ô][ô] AS char(30)) as Campo6
From Orders

SELECT Orders.OrderID,
Padded=RIGHT([ô]0000000000[ô] + CONVERT(VARCHAR,OrderID), 10)
FROM Orders
===============================================================

SqlNovaTabela = [Ô]Select TabelaAtual.Campo1, TabelaAtual.Campo2, REPLICATE([ô]0[ô],11-LEN([ô]0.00[ô])) + [ô].[ô] + right([ô]0.00[ô],2) as Campo3, CAST([ô][ô] AS char(30)) as Campo4
Into NovaTabela From TabelaAtual[Ô]

===============================================================

Ajudou?


[][ô]s,
Tunusat.
JCM0867 24/03/2014 20:02:02
#436477
Não deu certo
Joguei no SQL server e ele gerou o campo3 como varchar(10) e o campo4 como char(30)

Fiz o seguinte e deu certo:
SqlNovaTabela = [Ô]Select TabelaAtual.Campo1, TabelaAtual.Campo2, CAST(0 AS Numeric(10,2)) as Campo3, CAST([ô][ô] AS varchar(30)) as Campo4
Into NovaTabela From TabelaAtual[Ô]


“A imaginação é mais importante que o conhecimento. O conhecimento é limitado. A imaginação envolve o mundo.”
Albert Einsten

GUIMORAES 25/03/2014 09:37:33
#436490
deixa eu entender, você quer transferir os registros de uma tabela a outra, mais em uma tabela não existe as colunas que você quer passar?

Insert into novaTabela(campo1,campo2,campo3,campo4)
select tabelaAtual.campo1, tabelaAtual.campo2, cast(0 as numeric(10,2)) as campo3, cast([ô][ô] as varchar(30)) as campo4

No criar a tabela você pode definir valores fixos a ela, quando nulo. Neste caso você não precisaria fazer assim, basta informar os campos necessários no Insert.

Insert into novaTabela(campo1,campo2)
select tabelaAtual.campo1, tabelaAtual.campo2

Já que você está passando valores em branco, não vejo a necessidade de informar uma coluna formatada a zero e uma coluna com valor em branco.
JCM0867 27/03/2014 21:26:27
#436603
se eu fizer 0.00 as Campo3 ele fica Numeric(2,2), mas o cast resolveu o problema

Grato
Tópico encerrado , respostas não são mais permitidas