Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Algo Simple Pero...

Estas en el tema de Algo Simple Pero... en el foro de SQL Server en Foros del Web. Hola Amigos! Tengo un problema de esos que son lo mas simple del mundo pero que por lo mismo simple ya no puedo resolver. Tengo ...
  #1 (permalink)  
Antiguo 21/10/2008, 09:15
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Algo Simple Pero...

Hola Amigos!

Tengo un problema de esos que son lo mas simple del mundo pero que por lo mismo simple ya no puedo resolver.

Tengo una tabla mas o menos así.



IDARTICULO||ALMACEN||EXISTENCIA
___001______ALMA1______3
___001______ALMA2______4
___001______ALMA3______5


Y mi problema es que tengo que mostrar los resultados en una sola consulta
asi...


IDARTICULO||ALMA1||ALMA2||ALMA3
___001_______3_______4_____5


HA... se me ovido decir que... no puedo usar INTERSECT,UNION,EXEPT
  #2 (permalink)  
Antiguo 21/10/2008, 09:38
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Algo Simple Pero...

mmm Hola nereo

Pues no es tan simple como piensas....
Lo que yo sugiero es crear columnas en base a los registros.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #3 (permalink)  
Antiguo 21/10/2008, 09:41
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

muchas gracias pero, la verdad ya tengo casi 3 dias intentando esto y ya estoy bien bloqueado, ya no pienso nada.

podrias ponerme un ejemplo de como hacerlo asi como tu dices?

realmente te lo agradeceria.

Mira tengo este ejemplo podrian ayudarme a darle forma a mi necesidad?

http://paindev.wordpress.com/2007/08/06/convertir-filas-por-columnas-en-un-sql-query/

esta es mi consulta pero me marca error

SELECT oitw.ItemCode, oitw.WhsCode, oitw.OnHand
(SELECT oitw.ItemCode, oitw.WhsCode, oitw.OnHand
FROM OITW
WHERE oitw.WhsCode = 'DCKm11') AS 'DCKm11'
(SELECT oitw.ItemCode, oitw.WhsCode, oitw.OnHand
FROM OITW
WHERE oitw.WhsCode = 'Matriz') AS 'Matriz',
(SELECT oitw.ItemCode, oitw.WhsCode, oitw.OnHand
FROM OITW
WHERE oitw.WhsCode = 'BLUM-CHI') AS 'BLUM-CHI',

Última edición por nereo; 21/10/2008 a las 10:06
  #4 (permalink)  
Antiguo 21/10/2008, 10:14
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Algo Simple Pero...

que onda nereo
Oye una pregunta fuera de tema, que tal esta wordpress estoy por hacer mi blog pero estoy buscnado algo bueno, bonito y gratis jejej y por lo que he encontrado wordpress es uno de los mejorcitos...

Ok, veamos
IDARTICULO||ALMACEN||EXISTENCIA
___001______ALMA1______3
___001______ALMA2______4
___001______ALMA3______5

Alma1
Alma2
Alma3

simpre seran esos 3 o pueden ser N almas?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #5 (permalink)  
Antiguo 21/10/2008, 10:35
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

bueno gracias por la respuesta

mira solo hay 3 sucursales mi tabla se llama oitw, y los capos estan asi:

oitw.ItemCode, oitw.WhsCode, oitw.OnHand

WhsCode es el campo para el almacen y los valores que puede tomar son

Matriz
DCKm11
BLUM-CHIH

y respecto a tu pregunta si estas en lo correcto a mi me gusta mucho wordpress
  #6 (permalink)  
Antiguo 21/10/2008, 10:49
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Algo Simple Pero...

Bien seme ocurre que hagas esto:

Código:
SELECT 	
Campo1 = (select Orden from tbl_Procesos where Orden = 1 Group By Orden),
Campo2 = (select Orden from tbl_Procesos where Orden = 2 Group By Orden)
from tbl_Procesos
En tu caso seria
Código:
SELECT
ALMA1 = (SELECT Existencia FROM Tabla WHERE Almacen = ALMA1),
ALMA2 = (SELECT Existencia FROM Tabla WHERE Almacen = ALMA2),
ALMA3 = (SELECT Existencia FROM Tabla WHERE Almacen = ALMA3)
FROM Tabla
Ojala que te funcione y si no pues por lo menos te da una idea.

Saludos.

PD: intentare con wordpress
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #7 (permalink)  
Antiguo 21/10/2008, 11:13
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

realmente muchas gracias pero me marca un error

mira puse esto

SELECT
ALMA1 = (SELECT OnHand FROM OITW WHERE WhsCode = 'DCKm11'),
ALMA2 = (SELECT OnHand FROM OITW WHERE WhsCode = 'Matriz'),
ALMA3 = (SELECT OnHand FROM OITW WHERE WhsCode = 'BLUM-CHI')
FROM OITW

y lo que me marca es

"
la sub consulta ha devuelto mas de un valor , lo que no es correcto cuando va a continuacion de =,!= y todas la comparacion o cuando se utiliza como expresion
"
  #8 (permalink)  
Antiguo 21/10/2008, 11:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Algo Simple Pero...

Creo que te hace falta el SUM, ademas del IDArticulo

SELECT IDArticulo,
ALMA1 = SUM(SELECT OnHand FROM OITW WHERE WhsCode = 'DCKm11' and IDarticulo = Q.IdArticulo),
ALMA2 = SUM(SELECT OnHand FROM OITW WHERE WhsCode = 'Matriz' and IDarticulo = Q.IdArticulo),
ALMA3 = SUM(SELECT OnHand FROM OITW WHERE WhsCode = 'BLUM-CHI' and IDarticulo = Q.IdArticulo)
FROM OITW Q
GROUP BY IDArticulo
  #9 (permalink)  
Antiguo 21/10/2008, 12:07
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

en verdad agradesco que te tomes el tiempo de ayudarme pero si esto funciona realmente estoy pensado en recompesarte de alguna manera por que si me hurge

mir puse esto:

SELECT ItemCode,
ALMA1 = SUM(SELECT OnHand FROM OITW WHERE WhsCode = 'DCKm11' and ItemCode = Q.ItemCode),
ALMA2 = SUM(SELECT OnHand FROM OITW WHERE WhsCode = 'Matriz' and ItemCode = Q.ItemCode),
ALMA3 = SUM(SELECT OnHand FROM OITW WHERE WhsCode = 'BLUM-CHI' and ItemCode = Q.ItemCode)
FROM OITW Q
GROUP BY ItemCode

y me marca este error
Error en la lista de argumentos de funcion: no se reconoce 'SELECT'.
No se puede analizar el texto de consulta


si me pudes ayudar realmente gracias
  #10 (permalink)  
Antiguo 21/10/2008, 13:08
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

mil gracias ya pude lograrlo, ahora solo me pregunto si podria sacar la diferencia entre el primero y seguno campo.

SELECT ItemCode,
DCKM11= ISNULL((SELECT OnHand FROM OITW WHERE WhsCode = 'DCKm11' AND ItemCode =
Q.ItemCode),0),
MATRIZ= ISNULL((SELECT OnHand FROM OITW WHERE WhsCode = 'Matriz' AND ItemCode =
Q.ItemCode),0),
BLUMCHI= ISNULL((SELECT OnHand FROM OITW WHERE WhsCode = 'BLUM-CHI' AND ItemCode =
Q.ItemCode),0),
CERO1= ISNULL((SELECT OnHand FROM OITW WHERE WhsCode = '01' AND ItemCode =
Q.ItemCode),0)
FROM OITW Q
GROUP BY ItemCode
  #11 (permalink)  
Antiguo 21/10/2008, 13:14
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Algo Simple Pero...

¿Cual es el PRIMERO y cual el SEGUNDO campo?
  #12 (permalink)  
Antiguo 21/10/2008, 16:44
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

gracias

mira no, la verdad es que realmente ya vi que no ncesito eso lo que necesito es algo asi mira ahora y ya para terminar con excelentes resultados.

ya llegue a esto, pero creo que necesito algo asi como un if para mostrar el resultado final en una columna.

en mi reporte final obtengo una columna que se llama CompraSugeria que puede ser por ejemplo de 7 unidades


y obtengo otra columna que es DCKm11 que es la existencia de el almacen DCKm11 pero se supone que DCKm11 surte a CompraSug

entonces si en el DCKm11 solo tengo 4 unidades, entonces en mi columna resultado solo debe mostrar 4 que son las que le puede surtir a CompraSug, y si DCkm11 tiene mas de 7 que son las que solicita CompraSub entonces pues nomas que muestre 7 que son las que le puede surtir.


DCKm11||CompraSug||Surtir
___7_______4________4
___4_______6________4
___0_______5________0
___1_______3________1

es decir mi resultado depende de cuantos es capas de prestarle DCKm11 a CompaSug
segun yo requiero de algo com un if pero nunca se me habia presentado algo así.
  #13 (permalink)  
Antiguo 22/10/2008, 13:14
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Algo Simple Pero...

Revisa la instruccion CASE-WHEN-THEN-ELSE-END o bien, revisa si es factible desarrollar una FUNCION DE USUARIO (UDF)
  #14 (permalink)  
Antiguo 22/10/2008, 16:36
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Algo Simple Pero...

de nuevo mil gracias, todo lo que me dijiste funciono, en realidad para cuando vi esto del case ya lo tenia resulto pero en efecto asi fue como lo solucione.

mira yo tenia experiencia en consultas sql pero a nivel basico-medio.

en realidad nunca se ma habia presentado algo así pero esto es bueno por que te das cuenta de algo nuevo que puedes aprender.

te agradeceria si me puedes comentar sobre algun tutorial sobre las funciones de usuario porque nos pusieron un sistema nuevo que se llama SAP Business One y la usa mucho y creo me estaran pidiendo algunos reportes y por lo que he estado investigando por este reporte creo que me serviria mucho manejar algo de programacion en SQLSERVER ya que puedo ver consultas simples que declaran variables globales que pide el sistema a la hora de una consulta y luego ejecuta archivos sql almacenados y todo eso pues la verdad me da un poco de flojera pero si conoces algun tutorial de esto te agradeceria mucho


Gracias y pues en lo que te pueda ayudar, mi experiencia mas bien esta basada en mysql, y php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:06.