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

Subquery arroja + de 1 dato

Estas en el tema de Subquery arroja + de 1 dato en el foro de SQL Server en Foros del Web. Hola, tengo esta consulta pero al ejecutar, me marca el siguiete error: Msg 116, Level 16, State 1, Line 3 Only one expression can be ...
  #1 (permalink)  
Antiguo 22/11/2010, 13:24
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Subquery arroja + de 1 dato

Hola, tengo esta consulta pero al ejecutar, me marca el siguiete error:

Msg 116, Level 16, State 1, Line 3
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.


este es mi código

Código SQL:
Ver original
  1. SELECT  C.razonsocial, O.Folio, O.Cliente,  A.Fecha,
  2.             O.UsuarioCaptura,  O.Documento,O.Vendedor,O.TotalImporte,
  3.             O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,
  4.             O.Total,A.Autorizacion, PA.Autorizado, A.Usuario,
  5.  
  6. (SELECT od.folio, SUM((od.cantidad*ar.numero1)-(od.totalimporte)) AS Descuento
  7.  FROM ordvtadetalle od, articulo ar, cliente c, OrdVtaEncabezado AS O
  8. WHERE od.articulo=ar.clave
  9. AND c.clave=o.cliente
  10. AND od.folio=o.folio
  11. AND O.Folio IN ('P131788','P131649','P131220','P131148','P131666','P131774')
  12. AND clientetipo='DIST1' GROUP BY od.folio) PrecioDist1,
  13.  
  14.             O.cliente, c.clientetipo
  15.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,
  16.             P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  17.     WHERE   O.Empresa = 'Emp1'
  18.         AND C.clave = O.Cliente
  19.         AND O.Operacion=PA.Operacion
  20.         AND O.Folio=PA.Folio
  21.         AND PA.Autorizado='S'
  22. --      and O.Vendedor=@Vendedor
  23. AND O.Folio IN ('P131788','P131649','P131220','P131148','P131666','P131774')
  24.         AND O.Operacion='ORDVTA'
  25.         AND O.Folio=A.FOlio
  26.         AND PA.Operacion='ORDVTA'
  27.         AND od.articulo=ar.clave
  28.         AND od.folio=O.folio
  29.         AND O.cliente=c.clave
  30.  
  31. GROUP BY  O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente,  A.Fecha,
  32.     O.UsuarioCaptura,  O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,
  33.     O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
  34.     ORDER BY O.Folio DESC, A.Fecha DESC

Espero me puedan ayudar a obtener este dato
  #2 (permalink)  
Antiguo 22/11/2010, 13:33
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Subquery arroja + de 1 dato

El error te dice que tienes mas de 1 columna en tu subconsulta.
Revisa de nuevo.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 22/11/2010, 13:43
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Subquery arroja + de 1 dato

Si lo sé, arroja mas de 1 dato pero necesito que arroje varios datos de la subconsulta, ya que si no agrupo por el folio me da la suma total de todos los folios por ejemplo, realmente la consulta debe arrojar estos dos valores

8.5000000000
27.7500000000

pero si quito el group by me da un total de 36.25000000

y yo necesito la diferencia por folio no por grupo :(
  #4 (permalink)  
Antiguo 22/11/2010, 14:25
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Subquery arroja + de 1 dato

Prueba algo asi:
Código SQL:
Ver original
  1. SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento, O.Vendedor,
  2. O.TotalImporte, O.TotalDescuento, O.TotalImpuesto, O.TotalRetencion, O.Total, A.Autorizacion,
  3. PA.Autorizado, A.Usuario,
  4. SUM(CASE WHEN clientetipo = 'DIST1' THEN od.cantidad * ar.numero1 - od.totalimporte END) AS Descuento
  5. FROM OrdVtaEncabezado AS O
  6. INNER JOIN ordvtadetalle AS od ON O.folio = od.folio
  7. INNER JOIN articulo AS ar ON od.articulo = ar.clave
  8. INNER JOIN cliente AS C ON O.Cliente = C.clave --AND O.cliente=c.clave--DUPLICADO!
  9. INNER JOIN P5SysAutorizacion AS PA ON O.Operacion = PA.Operacion AND O.Folio = PA.Folio
  10. INNER JOIN OrdVtaAutorizacion AS A ON O.Folio = A.FOlio
  11. WHERE O.Operacion = 'ORDVTA' AND PA.Operacion = 'ORDVTA'
  12. AND PA.Autorizado = 'S' AND O.Empresa = 'Emp1'
  13. AND O.Folio IN ('P131788','P131649','P131220','P131148','P131666','P131774')
  14. GROUP BY C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento, O.Vendedor,
  15. O.TotalImporte, O.TotalDescuento, O.TotalImpuesto, O.TotalRetencion, O.Total, A.Autorizacion,
  16. PA.Autorizado, A.Usuario
  17. ORDER BY O.Folio DESC, A.Fecha DESC
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 22/11/2010, 15:38
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Subquery arroja + de 1 dato

Huy Flaviovich me ayudaste muchísimo con este caso :) q ya me estaba bloqueando gracias ahora lo voy a juntar con mi consulta q tengo uff a ver q tal :)

Última edición por Inicia; 22/11/2010 a las 15:46

Etiquetas: dato, subquery
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 00:31.