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

error en consulta con iif

Estas en el tema de error en consulta con iif en el foro de Bases de Datos General en Foros del Web. Buen dia tengo una consulta y me sucede lo siguiente 1. la consulta contiene dos registros como se muestra en la siguiente lista, pero sin ...
  #1 (permalink)  
Antiguo 22/07/2015, 18:50
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
error en consulta con iif

Buen dia

tengo una consulta y me sucede lo siguiente

1. la consulta contiene dos registros como se muestra en la siguiente lista, pero sin datos en los campos de macrozona, zona, subzona, canal

f200_nit f200_razon_social Macrozona Zona SubZona Canal
80185344 LOBO TAPIA VITERMO DE JESUS
80185344 LOBO TAPIA VITERMO DE JESUS

2. al adicionarle datos a los campos (macrozona, zona, subzona, canal) con una condición IIF me muestra 8 registros y algunos campos vienen vacios (porque se repiten los campos?)

f200_nit f200_razon_social Macrozona Zona SubZona Canal
80185344 LOBO TAPIA VITERMO DE JESUS TRADICIONAL
80185344 LOBO TAPIA VITERMO DE JESUS TRADICIONAL
80185344 LOBO TAPIA VITERMO DE JESUS CORDOBA
80185344 LOBO TAPIA VITERMO DE JESUS CORDOBA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA BAJA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA BAJA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA
  #2 (permalink)  
Antiguo 22/07/2015, 18:53
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

disculpa: estos son los datos que me esta arrojando la consulta del punto 2

f200_nit f200_razon_social Macrozona Zona SubZona Canal
80185344 LOBO TAPIA VITERMO DE JESUS TRADICIONAL
80185344 LOBO TAPIA VITERMO DE JESUS TRADICIONAL
80185344 LOBO TAPIA VITERMO DE JESUS CORDOBA
80185344 LOBO TAPIA VITERMO DE JESUS CORDOBA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA BAJA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA BAJA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA
80185344 LOBO TAPIA VITERMO DE JESUS COSTA
  #3 (permalink)  
Antiguo 22/07/2015, 18:57
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: error en consulta con iif

y cual es el query??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 22/07/2015, 19:18
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

buen dia

con este me muestra un registros
Código SQL:
Ver original
  1. SELECT  DISTINCT f200_nit,    f200_razon_social,   '' AS Macrozona,   '' AS Zona, '' AS SubZona,'' AS Canal
  2. FROM t461_cm_docto_factura_venta
  3. INNER JOIN (t207_mm_criterios_clientes INNER JOIN t206_mm_criterios_mayores ON (f207_id_cia=f206_id_cia AND f207_id_plan_criterios=f206_id_plan AND f207_id_criterio_mayor=f206_id  AND  (f206_id_plan= 001 OR f206_id_plan= 002 OR f206_id_plan= 003 OR f206_id_plan= 004))) ON (f461_rowid_tercero_fact=f207_rowid_tercero AND f461_id_sucursal_fact=f207_id_sucursal AND f461_id_cia=f207_id_cia)
  4. INNER JOIN  t201_mm_clientes ON (f461_rowid_tercero_fact=f201_rowid_tercero AND f461_id_sucursal_fact=f201_id_sucursal)
  5. INNER JOIN t200_mm_terceros ON (f200_rowid=f201_rowid_tercero AND f200_id_cia=f201_id_cia)
  6. WHERE f461_id_fecha BETWEEN '01/06/2015' AND '01/06/2015'
  7. AND (f200_nit LIKE '80185344%')


y con este me muestra cuatro registros
Código SQL:
Ver original
  1. SELECT  DISTINCT f200_nit,    f200_razon_social,   iif (f207_id_plan_criterios= 001, f206_descripcion,'') AS Macrozona,     iif (f207_id_plan_criterios= 002, f206_descripcion,'') AS Zona, iif (f207_id_plan_criterios= 003, f206_descripcion,'') AS SubZona,iif (f207_id_plan_criterios= 004, f206_descripcion,'') AS Canal
  2. FROM t461_cm_docto_factura_venta
  3. INNER JOIN (t207_mm_criterios_clientes INNER JOIN t206_mm_criterios_mayores ON (f207_id_cia=f206_id_cia AND f207_id_plan_criterios=f206_id_plan AND f207_id_criterio_mayor=f206_id  AND  (f206_id_plan= 001 OR f206_id_plan= 002 OR f206_id_plan= 003 OR f206_id_plan= 004))) ON (f461_rowid_tercero_fact=f207_rowid_tercero AND f461_id_sucursal_fact=f207_id_sucursal AND f461_id_cia=f207_id_cia)
  4. INNER JOIN  t201_mm_clientes ON (f461_rowid_tercero_fact=f201_rowid_tercero AND f461_id_sucursal_fact=f201_id_sucursal)
  5. INNER JOIN t200_mm_terceros ON (f200_rowid=f201_rowid_tercero AND f200_id_cia=f201_id_cia)
  6. WHERE f461_id_fecha BETWEEN '01/06/2015' AND '01/06/2015'
  7. AND (f200_nit LIKE '80185344%')

Última edición por gnzsoloyo; 23/07/2015 a las 12:42
  #5 (permalink)  
Antiguo 22/07/2015, 19:24
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: error en consulta con iif

usas access???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 22/07/2015, 20:23
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

sql server 2012
  #7 (permalink)  
Antiguo 23/07/2015, 12:18
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: error en consulta con iif

puedes mejor poner un ejemplo de tus datos y lo que quieres obtener.......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 23/07/2015, 15:13
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

buen dia

mi situación es la siguiente:
1. tengo esta consulta que me arroja un registro para el f207_rowid_tercero=73664

Código SQL:
Ver original
  1. SELECT  DISTINCT f207_rowid_tercero,f200_nit,    f200_razon_social,   '' AS Macrozona,   '' AS Zona, '' AS SubZona,'' AS Canal
  2. FROM t461_cm_docto_factura_venta
  3. INNER JOIN (t207_mm_criterios_clientes INNER JOIN t206_mm_criterios_mayores ON (f207_id_cia=f206_id_cia AND f207_id_plan_criterios=f206_id_plan AND f207_id_criterio_mayor=f206_id  AND  (f206_id_plan= 001 OR f206_id_plan= 002 OR f206_id_plan= 003 OR f206_id_plan= 004))) ON (f461_rowid_tercero_fact=f207_rowid_tercero AND f461_id_sucursal_fact=f207_id_sucursal AND f461_id_cia=f207_id_cia)
  4. INNER JOIN  t201_mm_clientes ON (f461_rowid_tercero_fact=f201_rowid_tercero AND f461_id_sucursal_fact=f201_id_sucursal)
  5. INNER JOIN t200_mm_terceros ON (f200_rowid=f201_rowid_tercero AND f200_id_cia=f201_id_cia)
  6. WHERE f461_id_fecha BETWEEN '01/06/2015' AND '01/06/2015'
  7. AND (f200_nit LIKE '80185344%')

este es el registro arrojado
f207_rowid_tercero-f200_nit-f200_razon_social-Macrozona-Zona-SubZona-Canal
73664- 80185344- LOBO TAPIA VITERMO DE JESUS

2. en otra consulta este mismo f207_rowid_tercero=73664 tiene otros datos que necesito asociarlos con la consulta del punto 1 (el campo f206_descripcion).
Código SQL:
Ver original
  1. SELECT  DISTINCT  f207_rowid_tercero,f207_id_sucursal,f207_id_plan_criterios,f206_descripcion, f207_id_criterio_mayor FROM t207_mm_criterios_clientes INNER JOIN t206_mm_criterios_mayores ON (f207_id_cia=f206_id_cia AND f207_id_plan_criterios=f206_id_plan AND f207_id_criterio_mayor=f206_id) WHERE (f206_id_plan= 001 OR f206_id_plan= 002 OR f206_id_plan= 003 OR f206_id_plan= 004)
  2. AND f207_rowid_tercero=73664  AND f207_id_sucursal=001
  3. ORDER BY f207_rowid_tercero,f207_id_sucursal,f207_id_plan_criterios,f207_id_criterio_mayor

estos son los registros arrojados:
f207_rowid_tercero-f207_id_sucursal-f207_id_plan_criterios-f206_descripcion-f207_id_criterio_mayor
73664-001-001- COSTA-0001
73664-001-002- COSTA BAJA-0008
73664-001-003 CORDOBA-0005
73664-001-004 TRADICIONAL-0001

pero al asociar las dos consultas en una sola me muestra cuatro registros. yo necesito que me muestre un solo registro(que los datos de la consulta anterior ser muestren en una sola fila)

esta es la consulta final y sus datos que no me funciona.
Código SQL:
Ver original
  1. SELECT  DISTINCT f207_rowid_tercero,f200_nit,    f200_razon_social,   iif (f207_id_plan_criterios= 001, f206_descripcion,'') AS Macrozona,     iif (f207_id_plan_criterios= 002, f206_descripcion,'') AS Zona, iif (f207_id_plan_criterios= 003, f206_descripcion,'') AS SubZona,iif (f207_id_plan_criterios= 004, f206_descripcion,'') AS Canal
  2. FROM t461_cm_docto_factura_venta
  3. INNER JOIN (t207_mm_criterios_clientes INNER JOIN t206_mm_criterios_mayores ON (f207_id_cia=f206_id_cia AND f207_id_plan_criterios=f206_id_plan AND f207_id_criterio_mayor=f206_id  AND  (f206_id_plan= 001 OR f206_id_plan= 002 OR f206_id_plan= 003 OR f206_id_plan= 004))) ON (f461_rowid_tercero_fact=f207_rowid_tercero AND f461_id_sucursal_fact=f207_id_sucursal AND f461_id_cia=f207_id_cia)
  4. INNER JOIN  t201_mm_clientes ON (f461_rowid_tercero_fact=f201_rowid_tercero AND f461_id_sucursal_fact=f201_id_sucursal)
  5. INNER JOIN t200_mm_terceros ON (f200_rowid=f201_rowid_tercero AND f200_id_cia=f201_id_cia)
  6. WHERE f461_id_fecha BETWEEN '01/06/2015' AND '01/06/2015'
  7. AND (f200_nit LIKE '80185344%')

f207_rowid_tercero-f200_nit-f200_razon_social-Macrozona-Zona-SubZona-Canal
73664-80185344-LOBO TAPIA VITERMO DE JESUS- - - -TRADICIONAL
73664-80185344-LOBO TAPIA VITERMO DE JESUS- - -CORDOBA -
73664-80185344-LOBO TAPIA VITERMO DE JESUS- -COSTA BAJA - -
73664-80185344-LOBO TAPIA VITERMO DE JESUS-COSTA-

Última edición por gnzsoloyo; 24/07/2015 a las 08:28
  #9 (permalink)  
Antiguo 23/07/2015, 15:19
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: error en consulta con iif

No pongas tus queries, realmente no me sirven para saber en donde estan mal, lo que quiero es algo como esto:

tabla 1
columna1 columna2 columna3

tabla2
columna1 columna2 columna3

Quiero
tabla1.columna1 tabla2.columna3

Algo asi tan dificil es?

Mira este post, ahi pido un ejemplo de los datos y ve lo que me ponen:

http://www.forosdelweb.com/f21/probl...tinct-1133160/
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 23/07/2015, 17:12
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

Hola.

tengo lo siguiente:

tabla t1 con un registro
columna1,columna2,columna3

tabla t2 con cuatro registros o filas
columna1,columna2,columna3,columna4

la columna1 es comun(el mismo valor) para la tabla t1 y t2 por tanto necesito una consulta de un solo registro con: t1.columna1,t1.columna2,t1.columna3,t2.columna4(va lor de la columna4 del primer registro de t2), t2.columna5(valor de la columna4 del segundo registro de t2),t2.columna6(valor de la columna4 del tercer registro de t2),t2.columna7(valor de la columna4 del cuarto registro de t2)

espero que me entienda y les agradezco sus esfuerzos por ayudarme
  #11 (permalink)  
Antiguo 23/07/2015, 17:40
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: error en consulta con iif

No revisaste la liga que te puse??? lo de columna 1 columna 2 es solo un ejemplo algo como esto ayudaria mas:

http://www.forosdelweb.com/f87/consu...6/#post4632126
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 24/07/2015, 08:17
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

Gracias libras

revise el ejemplo que me envía y no me funciona para mi caso. talvez no me he explicado bien.

yo tengo:
tabla t1 con un registro que contiene tres columnas( columna1,columna2,columna3)

también tengo tabla t2 con cuatro registros y cada registro tiene cuatro columnas(columna1,columna2,columna3,columna4)

la columna1 de ambas tablas son comunes(tienen el mismo valor t1.columna1=t2.columna1), por tanto al hacer la consulta la asocio o amarro por columna1 para poder traer el dato de la columna4 de la tabla2 (t2.columna4)

select t2.columna4 from t1 inner join t2 on (t1.columna1=t2.columna1)

el sistema me trae cuatro filas o registros asi:
PRIMERO
SEGUNDO
TERCERO
CUARTO

yo necesito que me traiga una sola fila o registro de esta forma:
PRIMERO,SEGUNDO,TERCERO, CUARTO

espero que este ejemplo sea mas claro y me puedan colaborar en el caso que conozcan una solución.
  #13 (permalink)  
Antiguo 24/07/2015, 08:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error en consulta con iif

Lo que quieres, entonces, es una tabla pivoteada...



PIVOT dinámico en SQL Server

¡Santos manuales de referencia, Batman!
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 24/07/2015, 12:27
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: error en consulta con iif

Cita:
Iniciado por vpino Ver Mensaje
Gracias libras

revise el ejemplo que me envía y no me funciona para mi caso. talvez no me he explicado bien.

yo tengo:
tabla t1 con un registro que contiene tres columnas( columna1,columna2,columna3)

también tengo tabla t2 con cuatro registros y cada registro tiene cuatro columnas(columna1,columna2,columna3,columna4)

la columna1 de ambas tablas son comunes(tienen el mismo valor t1.columna1=t2.columna1), por tanto al hacer la consulta la asocio o amarro por columna1 para poder traer el dato de la columna4 de la tabla2 (t2.columna4)

select t2.columna4 from t1 inner join t2 on (t1.columna1=t2.columna1)

el sistema me trae cuatro filas o registros asi:
PRIMERO
SEGUNDO
TERCERO
CUARTO

yo necesito que me traiga una sola fila o registro de esta forma:
PRIMERO,SEGUNDO,TERCERO, CUARTO

espero que este ejemplo sea mas claro y me puedan colaborar en el caso que conozcan una solución.
Lo que te mande no es la solucion a tu problema, es para que veas como se hace una pregunta bien estructurada en relacion a un query, como bien te dice gnzsoloyo lo que ocupas leer es sobre tablas pivote.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 24/07/2015, 14:41
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: error en consulta con iif

voy a revisar el tema de tablas pivote

gracias y les estaré informando. de nuevo gracias

Etiquetas: campo
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 14:12.