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

Problema con Select y tablas

Estas en el tema de Problema con Select y tablas en el foro de SQL Server en Foros del Web. Hola a todos ya antes habia preguntado algo asi pero es que la cosa es diferente les voy a explicar paso a paso para que ...
  #1 (permalink)  
Antiguo 11/03/2013, 16:59
 
Fecha de Ingreso: marzo-2013
Ubicación: Caracas
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Problema con Select y tablas

Hola a todos ya antes habia preguntado algo asi pero es que la cosa es diferente les voy a explicar paso a paso para que entiendan lo que quiero

Utilizo el sistema SAP que trabaja integrado con SQL Sever 2008

Tengo este query

Código SQL:
Ver original
  1. (SELECT T0.DocNum,T0.[CardCode], T0.[DocTotal] AS 'TOTAL EN BS' ,T1.[Quantity] AS 'TOTAL'  FROM ORPD T0  INNER JOIN RPD1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.[DocDate] >='20130101'  AND T0.[DocDate] <= '20130125')
  2. ORDER BY  T0.DocNum ASC

que me arroja un resultado como este:

#---------Numero de Doc-------Codigo de Documento----- Total en Bs------Total
1---------354-------------------------------P000014---------------------8000--------1,00
2---------354-------------------------------P000014----------------------10000-------1,00
3--------355-----------------------------P000014--------------------1000-------------10,10
4------- 355--------------------------------P000014-----------------------10000-------7,00

Luego con este Query
Código SQL:
Ver original
  1. (SELECT T0.DocNum,T0.[CardCode], T0.[DocTotal] AS 'TOTAL EN BS' ,SUM(T1.[Quantity]) AS 'TOTAL'  FROM ORPD T0  INNER JOIN RPD1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.[DocDate] >='20130101'  AND T0.[DocDate] <= '20130125'
  2. GROUP BY  T0.DocNum,T0.[CardCode],T0.[DocTotal])
  3. ORDER BY  T0.[CardCode]

Se me agrupan los Numero de Doc y los totales finales quedando algo asi

#---------Numero de Doc-------Codigo de Documento----- Total en Bs------Total
1---------354--------------------------P000014---------------------5000---------2,00
2---------355---------------------------P000014----------------------10000------17,10

ahora lo que yo quiero es un query que me agrupe los que tengan codigo igual eliminando la celda Numero de Doc y utilizo este query

Código SQL:
Ver original
  1. (SELECT T0.[CardCode], SUM(T0.[DocTotal]) AS 'TOTAL EN BS' ,SUM(T1.[Quantity]) AS 'TOTAL'  FROM ORPD T0  INNER JOIN RPD1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.[DocDate] >='20130101'  AND T0.[DocDate] <= '20130125'
  2. GROUP BY  T0.[CardCode])
  3. ORDER BY  T0.[CardCode]

Pero el problema esta en que me los agrupa pero no solo suma 5000 + 10000 si no tambien las que ya habian sido agrupadas es decir los dos codigos del doc 354 que se puede apreciar arriba y los 2 del 355 generandome algo asi

#---------Codigo de Documento----- Total en Bs------Total
1---------P000014---------------------18000---------2,00
2---------P000014----------------------11000------17,10

Yo solo quiero que me agrupe los que tengan codigos iguales y me sumen los totales pero solo 1 de cada Numero de Documento

Gracias espero que puedan ayudarme

Última edición por gnzsoloyo; 11/03/2013 a las 17:04 Razón: SQL sin etiquetar. Usar Highlight "SQL"
  #2 (permalink)  
Antiguo 11/03/2013, 17:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema con Select y tablas

ya te habia respondido en otro post en donde nada mas te sumaba el primero de cada codigo, no te sirvio? creo que ni siquiera lo probaste......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/03/2013, 17:28
 
Fecha de Ingreso: marzo-2013
Ubicación: Caracas
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con Select y tablas

Si yo lo vi amigo Libras y muchas gracias pero no me funciono es que como tu mismo decias, como yo lo queria ver no iba a funcionar el problema aqui es con la 2da tabla xq cuando elimino el Inner Join si me funciona correctamente y me suma solo el 1ero de cada Numero de Documento

(SELECT T0.[CardCode], SUM(T0.[DocTotal]) as 'TOTAL EN BS' FROM ORPD T0 WHERE T0.[DocDate] >='20130101' and T0.[DocDate] <= '20130125'
GROUP BY T0.[CardCode])
ORDER BY T0.[CardCode]

Este si me hac lo que quiero pero me falta el total de la otra tabla

aa y disculpe me acabo de fijar que hic mal las tablas de la explicacion

#---------Codigo de Documento----- Total en Bs------Total
1---------P000014---------------------18000---------2,00
2---------P000015----------------------11000------17,10

Asi si deberia de quedar eran 2 y 2
  #4 (permalink)  
Antiguo 11/03/2013, 17:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema con Select y tablas

entonces no viste el que te puse.......

Código SQL:
Ver original
  1. SELECT T0.DocNum,T0.[CardCode], T0.[DocTotal] AS 'TOTAL EN BS' ,SUM(T1.[Quantity]) AS 'TOTAL' INTO #temp FROM ORPD T0 INNER JOIN RPD1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.[DocDate] >='20130101' AND T0.[DocDate] <= '20130125'
  2. GROUP BY T0.DocNum,T0.[CardCode],T0.[DocTotal]
  3. ORDER BY T0.[CardCode]
  4.  
  5.  
  6. SELECT num,num_doc,t1.codigo_doc,total_bs,total FROM(
  7. SELECT ROW_NUMBER() OVER(partition BY codigo_doc ORDER BY codigo_doc) AS rn, num,num_doc,codigo_doc FROM #temp) AS t1
  8. LEFT JOIN (SELECT codigo_doc,SUM(total_bs) total_bs,SUM(total) total FROM #temp GROUP BY codigo_doc) AS t2 ON (t1.codigo_doc=t2.codigo_doc AND t1.rn=1)
  9. WHERE rn=1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 11/03/2013, 17:42
 
Fecha de Ingreso: marzo-2013
Ubicación: Caracas
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con Select y tablas

jeje si amigo ese fue el que vi... y lo probe y nada no logro enender en que me influye la 2da tabla en el resultado final
  #6 (permalink)  
Antiguo 11/03/2013, 17:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema con Select y tablas

bueno para que entiendas la logica del query....


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. num INT,
  4. num_doc INT,
  5. codigo_doc VARCHAR(20),
  6. total_bs INT,
  7. total DECIMAL(9,6)
  8. )
  9.  
  10. INSERT INTO #temp VALUES (1,343,'P00014',1000,12.23)
  11. INSERT INTO #temp VALUES (2,344,'P00014',100000,12.12)
  12. INSERT INTO #temp VALUES (3,345,'P00014',50000,12.12)
  13. INSERT INTO #temp VALUES (4,346,'P00015',20000000,22.12)
  14.  
  15. SELECT num,num_doc,t1.codigo_doc,total_bs,total FROM(
  16. SELECT ROW_NUMBER() OVER(partition BY codigo_doc ORDER BY codigo_doc) AS rn, num,num_doc,codigo_doc FROM #temp) AS t1
  17. LEFT JOIN (SELECT codigo_doc,SUM(total_bs) total_bs,SUM(total) total FROM #temp GROUP BY codigo_doc) AS t2 ON (t1.codigo_doc=t2.codigo_doc AND t1.rn=1)
  18. WHERE rn=1

pruebalo y me dices si es o no es el resultado que buscas.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 11/03/2013, 18:03
 
Fecha de Ingreso: marzo-2013
Ubicación: Caracas
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con Select y tablas

eso es exactamente lo q quiero q me salga, bueno a excepcion que solo deseo los codigos y los totales... pero me confunde xq usas campos que no existen

y el SAP me dic .I. jajaja sin ofender amigo ...

disculpame lo tapado me stoy iniciando en Sql bueno siempre utilizaba cosas sencillas y php hacia lo demas jajaja
  #8 (permalink)  
Antiguo 11/03/2013, 18:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema con Select y tablas

campos que no existen? pues son alias a subquerys o a funciones de tabla por ejemplo el row_number.....que es lo que no entiendes?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 11/03/2013, 18:24
 
Fecha de Ingreso: marzo-2013
Ubicación: Caracas
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con Select y tablas

T explico me diste esto

SELECT T0.DocNum,T0.[CardCode], T0.[DocTotal] AS 'TOTAL EN BS' ,SUM(T1.[Quantity]) AS 'TOTAL' INTO #temp FROM ORPD T0 INNER JOIN RPD1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.[DocDate] >='20130101' AND T0.[DocDate] <= '20130125'
GROUP BY T0.DocNum,T0.[CardCode],T0.[DocTotal]
ORDER BY T0.[CardCode]


SELECT num,num_doc,t1.codigo_doc,total_bs,total FROM(
SELECT ROW_NUMBER() over(partition BY codigo_doc ORDER BY codigo_doc) AS rn, num,num_doc,codigo_doc FROM #temp) as t1
LEFT JOIN (SELECT codigo_doc,SUM(total_bs) total_bs,SUM(total) total FROM #temp group by codigo_doc) as t2 on (t1.codigo_doc=t2.codigo_doc and t1.rn=1)
WHERE rn=1

El Sql server me dic que esto (SELECT num,num_doc,t1.codigo_doc,total_bs,total) no son nombres validos de columnas x eso digo que usas campos que no existen
  #10 (permalink)  
Antiguo 11/03/2013, 18:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema con Select y tablas

como lo dije en un momento, los querys que se ponen aqui no van a funcionar como tal porque estoy usando nombres de columnas diferentes....aqui lo que debes de hacer es ver que columnas tienes en la tabla temp que tienes y ponerlas dentro de la segunda columna(la logica ahi esta, pero si quieres que te ayude ya cuenta como consultoria($$))
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select
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:19.