Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problemas con condición para reemplazar cadena

Hola Comunidad:

tengo problemas al querer cambiar el dato de un campo, quizas sea solo error de sintaxis o lógica, ya que no soy un experto en temas de programación.

pueden apoyarme.

Original

Cambiar

­­if(PLANT = Centro AND "/BIC/ZCMMSTA" = 'MZ', "/BIC/ZCMMSTA" = 'BC',

ELSE PLANT = Tienda AND "/BIC/ZCMMSTA" = MZ, "/BIC/ZCMMSTA"= FP)

ya sea con SQL o Lenguaje Nativo de QlikView.

saludos

1 Solution

Accepted Solutions
jvitantonio
Luminary Alumni
Luminary Alumni

Hola Agustin, prueba esto en el script de Qlikview:

LOAD

IF(PLANT = 'Centro' AND [/BIC/ZCMMSTA] = 'MZ', 'BC',

  IF(PLANT = 'Tienda' AND [/BIC/ZCMMSTA] = 'MZ', 'FP', [/BIC/ZCMMSTA])) AS [/BIC/ZCMMSTA]

FROM yourQVD.qvd (qvd);

Saludos

Juan

View solution in original post

8 Replies
maximiliano_vel
Partner - Creator III
Partner - Creator III

Puedes por favor indicar cual es el resultado esperado, teniendo en cuenta la primera tabla?


Si el resultado esperado es la tabla de abajo, entonces en la carga la funcion deberia ser


if(PLANT = 'Centro' AND [/BIC/ZCMMSTA] = 'MZ', 'BC',

if(PLANT = 'Tienda' AND [/BIC/ZCMMSTA] = 'MZ', 'FP'))


Si el valor de la columna [/BIC/ZCMMSTA] no cambia entonces


if(PLANT = 'Centro', 'BC',

if(PLANT = 'Tienda', 'FP'))


Saludos

Not applicable
Author

Hola Maximiliano:

la tabla debe quedar así

Not applicable
Author

Maximiliano:

olvide mencionar que hay registro que pueden estar en vacios y es correcto

es por eso que ls que contienen el MZ debe cambiar de acuerdo al tipo de PLANT

saludos

Not applicable
Author

Comunidad:

pongo el codigo con la sugerencia de Maximiliano me marca error en el if

Obsoletos:
SQL SELECT
CAST("/BIC/ZBWCANUMC" AS CHAR) as NUM_CAJAS,
"/BIC/ZCDATAB" as FECHA_INICIO,
"/BIC/ZCMATERI" as MATERIAL,
"/BIC/ZCMMSTA" as STATUS_MATERIAL,
"/BIC/ZCPLANTTX" as CENTRO,
"/BIC/ZCVENDOR" as PROVEEDOR,
CALMONTH as "AÑO_MES",
Substring (CALMONTH,1,4) as "AÑO",
Substring (CALMONTH,5,2) as MES,
CAST(CPTSTISPV as CHAR) as V_COMPRA_S,
CAST(CPTSTREPV as CHAR) as V_COMPRA_E,
CAST(CPTSTISPV + CPTSTREPV as CHAR) AS CT

    MATERIAL as NUM_MATERIAL,
MOVETYPE CLS_MOV,
PLANT as NUM_CENTRO,
VENDOR as Num_PROVEEDOR,
"SALES_DIST" AS ZONA,
ROW_NUMBER( ) OVER(ORDER BY PLANT ASC) AS REGISTRO

if (PLANT = ‘C001’ AND [/BIC/ZCMMSTA] = 'MZ', 'BC')
//if(PLANT = 'Tienda' AND [/BIC/ZCMMSTA] = 'MZ', 'FP'))
 
Where PLANT like '%C%' or PLANT like '%T%';

----------------------------------------------------------------------------------



saludos

jvitantonio
Luminary Alumni
Luminary Alumni

Hola Agustin, prueba esto en el script de Qlikview:

LOAD

IF(PLANT = 'Centro' AND [/BIC/ZCMMSTA] = 'MZ', 'BC',

  IF(PLANT = 'Tienda' AND [/BIC/ZCMMSTA] = 'MZ', 'FP', [/BIC/ZCMMSTA])) AS [/BIC/ZCMMSTA]

FROM yourQVD.qvd (qvd);

Saludos

Juan

Not applicable
Author

Hola Juan:

probe lo siguiente como me sujieres en el lado de QV

Tome una muestra con un Centro por lo que pongo el dato directo quedando de la siguiente manera pero me marca error,

LOAD

    if(NUM_CENTRO = 'C001' and STATUS_MATERIAL = 'MZ', 'BC') AS STATUS_MATERIAL,

    NUM_CAJAS,

     FECHA_INICIO,

     MATERIAL,

     STATUS_MATERIAL,

     CENTRO,

     PROVEEDOR,

     AÑO_MES,

     AÑO,

     MES,

     V_COMPRA_S,

     V_COMPRA_E,

     CT,

     NUM_MATERIAL,

     CLS_MOV,

     NUM_CENTRO,

     NUM_PROVEEDOR,

     ZONA,

     REGISTRO

    

FROM

PERO MEMARCO UN ERROR

jvitantonio
Luminary Alumni
Luminary Alumni

Agustin, si lees el error, esta bien claro que te esta marcando que tiene dos campos con el mismo nombre (STATUS_MATERIAL). Elimina uno de ellos y ya.

Saludos

Juan

Not applicable
Author

Juan:

jejeje una disculpa estoy dormido aun

quedolisto y funciono a la perfecion

muchas gracias