SQL Server - insertar desde otras tablas

   
Vista:

insertar desde otras tablas

Publicado por kensi (2 intervenciones) el 07/07/2016 17:02:26
Hola a todos.
Tengo un problema con el insert en sql no se como realizar ,les explico estoy insertando a una tabla información desde varias tablas eso lo puedo hacer el problema se presenta cuando quiero insertar desde una tabla (productos)
varios registros en una tabla pero enviando dos códigos por registro
ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
INSERT INTO TempGeneradorPrecio
 (IdProducto, CodigoProveedor, Precio)
 
SELECT
PO.IdProducto,
PO.CodigoProveedor,
LPD.PrecioCD as Precio
FROM Producto PO
LEFT JOIN ListaPrecioDetalle  LPD ON PO.IdProducto= LPD.IdProducto
INNER JOIN ListaPrecio LP ON LPD.IdListaPrecio=LP.IdListaPrecio
LEFT JOIN MATERIAL MA ON PO.IdMaterial=MA.IdMaterial
WHERE LP.IdListaPrecio=1 AND PO.IdProducto in (151,154,215)

hasta aqui solo pude insertar 3 produtos pero solo asi:
IdGenerado IdProducto Codigo Proveedor Precio IdProducto2 CodigoProveedor2 Precio2

1 ----------- 151------------- 061-058897 ---- 7.25
2 --------- 154 ------------ 078-5591 ------ 6.38
3----------- 215 ------------ 078-51425 ----- 2.15


el problema es como ingreso los otros tres iproducto2 codigoproveedor2 precio2 con codigos diferentes.
claro que para cada codigo ejemplo 151 le boy a mandar un codigo que elija yo xx codigo y o mismo para los demas ,por cada registro tengo que enviar 2 codigos de producto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

insertar desde otras tablas

Publicado por Isaias (3186 intervenciones) el 07/07/2016 21:51:44
Se dice VOY, no BOY

¿Para que quieres hacer esto?

Y no espero como respueta, "Porque lo quiero", "Que te importa", "Solo responde"

No se me hace logico lo que quieres hacer, es, convertir renglones a columnas, ¿se puede hacer?, si, hay varios metodos para SQL SERVER, tambien es algo que no comentas, que motor de base de datos ocupas y que version-edicion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar desde otras tablas

Publicado por kensi (2 intervenciones) el 07/07/2016 22:53:44
gracias por a corrección lo de voy,

sobre la versión de sql Server es 2014

lo que quiero es insertar dos filas de la tabla origen en una sola fila destino, no todos los campos si no solo 3 campos de cada registro
idproducto,codigoproceedor,precio por ejemplo .

la tabla es solo temporal solo es para generar codigo de barra con dos productos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

insertar desde otras tablas

Publicado por Isaias (3186 intervenciones) el 07/07/2016 23:24:17
Te entrego una prueba "As is"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE TABLE #TERE  (idArea char(5), NumServicios int, Servicio varchar(50))
 
insert into #TERE  values('K3413', 0 , 'Cotización de pruebas')
insert into #TERE  values('K3413', 0 , 'Pruebas prototipo a transformadores')
insert into #TERE  values('K3413', 0 , 'otros')
insert into #TERE  values('K3422', 83, 'Cotización de pruebas')
insert into #TERE  values('K3422', 16, 'Pruebas prototipo a transformadores')
insert into #TERE  values('K3422', 0, 'Apoyo en licitaciones')
insert into #TERE  values('K3422', 0, 'Análisis de falla')
insert into #TERE  values('K3422', 0, 'Pruebas en Sitio')
insert into #TERE  values('K3422', 0, 'Pruebas en campo')
insert into #TERE  values('K3421', 21, 'Cotización de pruebas')
insert into #TERE  values('K3421', 1, 'Pruebas prototipo a transformadores')
insert into #TERE  values('K3421', 0, 'otros')
insert into #TERE  values('K3421', 0, 'Pruebas en Sitio')
insert into #TERE  values('K3421', 0, 'Pruebas en campo')
 
 
-- Con un CASE
SELECT Servicio,
sum(case when IdArea = 'K3413' THEN NumServicios ELSE 0 END) AS [K3413],
sum(case when IdArea = 'K3421' THEN NumServicios ELSE 0 END) AS [K3421],
sum(case when IdArea = 'K3422' THEN NumServicios ELSE 0 END) AS [K3422]
from #TERE 
group by Servicio
 
-- Con un PIVOT
SELECT Servicio,
        isnull([K3413],0) as K3413,
        isnull([K3421],0) as K3421,
        isnull([K3422],0) as K3422
FROM (
        SELECT Servicio,
               NumServicios,
               idArea
        FROM #TERE ) V
        PIVOT (SUM(NumServicios)
        FOR idArea IN ([K3413],
						[K3421],
						[K3422]
						)
        ) AS PV
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar