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

[SOLUCIONADO] Encontrar registros con X cantidad de lineas !!!

Estas en el tema de Encontrar registros con X cantidad de lineas !!! en el foro de SQL Server en Foros del Web. Buen dia, sera que me ayudan con una duda ?? Trabajo con un sistema que por cada factura hace insert a dos tablas principales (y ...
  #1 (permalink)  
Antiguo 20/04/2015, 09:02
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Encontrar registros con X cantidad de lineas !!!

Buen dia, sera que me ayudan con una duda ??

Trabajo con un sistema que por cada factura hace insert a dos tablas principales (y las que tendremos en cuestion) que son "DOCUMENTO_POS" que sera tabla 1 y "DOC_POS_LINEA" que sera tabla 2.

En la tabla 1 inserta el encabezado de cada factura, y en la tabla 2 inserta las lineas. Les comento que para el caso se trabaja con combustibles y que cada factura o la mayoria lleva una linea de combustible y 3 lineas de impuesto.

Ejemplo tabla 2:
Código SQL:
Ver original
  1. LINEA   DOCUMENTO           CAJA        TIPO    ARTICULO
  2. 3     CRF-14SD006C-47296    0003         F      AD-VALOREM
  3. 2     CRF-14SD006C-47296    0003         F      DL.487
  4. 1     CRF-14SD006C-47296    0003         F      FOVIAL
  5. 0     CRF-14SD006C-47296    0003         F      COM03

en todas las facturas deberia llevar esa nomenclatura, donde COM03 es el combustible y el restio de lineas son impuestos.

El problema es que desde hace unos dias no se estan insertando de forma corracta los datos, especificamente los impuestos, entonces queiro saber si hay alguna forma de descubrir en la tabla 2 que documentos (guiandonos por el numero de factura) tienen menos de 4 lineas asociadas a dicho numero de documento??

Sinceramente ya estudie el tema y pedi algunas ayudas pero nadie da una forma de como hacerlo

Creen que se pueda hacer lo que quiero o no ?? o definitivamente debo ir linea por linea buscando las que tienen menos de 4 lineas ?? les comento que cada dia en la estacion se hacen unas 700 facturas minimo
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Última edición por KATHYU; 20/04/2015 a las 09:23
  #2 (permalink)  
Antiguo 20/04/2015, 09:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Encontrar registros con X cantidad de lineas !!!

Estas trabajando con sql server??? de ser asi puedes ver el uso de la funcion row_number que ayudaria a encontrar cuales son las que tienen menos de 3 lineas, o en su defecto podrias intentar con la funcion having, te dejo un ejemplo con la funcion having ;)


Código SQL:
Ver original
  1. CREATE TABLE #facturas(
  2. id_factura INT
  3. )
  4.  
  5. CREATE TABLE #detalle
  6. (
  7. id_factura INT,
  8. detalle VARCHAR(20)
  9. )
  10.  
  11. INSERT INTO #facturas VALUES (1)
  12. INSERT INTO #facturas VALUES (2)
  13. INSERT INTO #facturas VALUES (3)
  14.  
  15. INSERT INTO #detalle VALUES (1,'detalle1')
  16. INSERT INTO #detalle VALUES (1,'detalle2')
  17. INSERT INTO #detalle VALUES (1,'detalle3')
  18. INSERT INTO #detalle VALUES (1,'detalle4')
  19.  
  20.  
  21. INSERT INTO #detalle VALUES (2,'detalle1')
  22. INSERT INTO #detalle VALUES (2,'detalle2')
  23. INSERT INTO #detalle VALUES (2,'detalle3')
  24.  
  25. INSERT INTO #detalle VALUES (3,'detalle1')
  26. INSERT INTO #detalle VALUES (3,'detalle2')
  27. INSERT INTO #detalle VALUES (3,'detalle3')
  28. INSERT INTO #detalle VALUES (3,'detalle4')
  29.  
  30. SELECT  t1.id_factura,COUNT(t2.id_factura) AS total FROM #facturas AS t1
  31. LEFT JOIN #detalle AS t2 ON (t1.id_factura=t2.id_factura)
  32. GROUP BY t1.id_factura
  33. HAVING COUNT(t2.id_factura)<4

El resultado de esta consulta es la factura 2 que solamente tiene 3 registros :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 20/04/2015, 10:20
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Encontrar registros con X cantidad de lineas !!!

Cita:
Iniciado por Libras Ver Mensaje
Estas trabajando con sql server??? de ser asi puedes ver el uso de la funcion row_number que ayudaria a encontrar cuales son las que tienen menos de 3 lineas, o en su defecto podrias intentar con la funcion having, te dejo un ejemplo con la funcion having ;)


Código SQL:
Ver original
  1. CREATE TABLE #facturas(
  2. id_factura INT
  3. )
  4.  
  5. CREATE TABLE #detalle
  6. (
  7. id_factura INT,
  8. detalle VARCHAR(20)
  9. )
  10.  
  11. INSERT INTO #facturas VALUES (1)
  12. INSERT INTO #facturas VALUES (2)
  13. INSERT INTO #facturas VALUES (3)
  14.  
  15. INSERT INTO #detalle VALUES (1,'detalle1')
  16. INSERT INTO #detalle VALUES (1,'detalle2')
  17. INSERT INTO #detalle VALUES (1,'detalle3')
  18. INSERT INTO #detalle VALUES (1,'detalle4')
  19.  
  20.  
  21. INSERT INTO #detalle VALUES (2,'detalle1')
  22. INSERT INTO #detalle VALUES (2,'detalle2')
  23. INSERT INTO #detalle VALUES (2,'detalle3')
  24.  
  25. INSERT INTO #detalle VALUES (3,'detalle1')
  26. INSERT INTO #detalle VALUES (3,'detalle2')
  27. INSERT INTO #detalle VALUES (3,'detalle3')
  28. INSERT INTO #detalle VALUES (3,'detalle4')
  29.  
  30. SELECT  t1.id_factura,COUNT(t2.id_factura) AS total FROM #facturas AS t1
  31. LEFT JOIN #detalle AS t2 ON (t1.id_factura=t2.id_factura)
  32. GROUP BY t1.id_factura
  33. HAVING COUNT(t2.id_factura)<4

El resultado de esta consulta es la factura 2 que solamente tiene 3 registros :)


Muchas gracias, llegue con su ejemplo a lo que deseaba


Código SQL:
Ver original
  1. SELECT t1.DOCUMENTO,COUNT(t2.Documento) AS total FROM DLCEC.DOCUMENTO_POS AS t1
  2. LEFT JOIN DLCEC.DOC_POS_LINEA AS t2 ON (t1.DOCUMENTO=t2.DOCUMENTO)
  3. WHERE t2.CAJA='0003'
  4. GROUP BY t1.DOCUMENTO,t1.FCH_HORA_CREACION
  5. HAVING COUNT(t2.DOCUMENTO)<4 ORDER BY t1.FCH_HORA_CREACION DESC
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #4 (permalink)  
Antiguo 20/04/2015, 10:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Encontrar registros con X cantidad de lineas !!!

Para eso era el ejemplo para que llegaras a lo que necesitabas ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: cantidad, encontrar, lineas, registros, tabla
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 21:35.