SQL - Ayuda CASE

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Ayuda CASE

Publicado por SIN (6 intervenciones) el 29/01/2020 18:21:50
Hola, tengo una duda:
Tengo una consulta con ID, OBSERVACION y APORTA.

EL ID es un cliente, idealmente único en la tabla.
OBSERVACION me indica que acciones ha realizado el cliente.
APORTA me indica si el cliente realizo ciertas tareas. 'SI' o 'NO'

Me gustaría que en la tabla no se mostrara 'SI' y 'NO' a la vez ó más de 1 'SI', es decir, si el cliente realizo cualquier combinación de las tareas 4002,4003 o 4004 , aparezca solo 1 fila que diga APORTA-> 'SI'. caso contrario 'NO'.

Aunque borre la columna OBSERVACION me sigue mostrando casos con APORTA 'SI' 'NO'

Agradecería su ayuda

sql
tabla
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda CASE

Publicado por Isaias (1921 intervenciones) el 29/01/2020 19:17:54
Intenta

1
CASE WHEN B.LEEMOBLE IN(402,403,404) THEN 'SI' ELSE 'NO' END AS APORTA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda CASE

Publicado por leonardo_josue (1 intervención) el 30/01/2020 16:47:02
Hola SIN, veamos si entendí bien...

Según lo que pones en tu ultima entrada, la consulta está mal porque para el mismo ID (170217) en un registro aparece como SI y en otro registro aparece como NO ¿es correcto? si lo que pretendes hacer es que en AMBOS REGISTROS APAREZCA UN SI, entonces puedes probar así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mysql> SELECT * FROM tabla;
+------+-------------+
| id   | observacion |
+------+-------------+
| 1    | NULL        |
| 2    | 4000        |
| 2    | 4002        |
| 3    | 4003        |
| 4    | 4000        |
| 4    | 4001        |
+------+-------------+
6 rows in set (0.00 sec)
 
mysql> SELECT
    ->   id, observacion,
    ->   CASE WHEN exists ( SELECT id
    ->                      FROM tabla T2
    ->                      WHERE T2.id = T1.id AND
    ->                      observacion in (4002, 4003, 4004))
    ->   THEN 'SI' ELSE 'NO' END aporta
    -> FROM tabla T1;
+------+-------------+--------+
| id   | observacion | aporta |
+------+-------------+--------+
| 1    | NULL        | NO     |
| 2    | 4000        | SI     |
| 2    | 4002        | SI     |
| 3    | 4003        | SI     |
| 4    | 4000        | NO     |
| 4    | 4001        | NO     |
+------+-------------+--------+
6 rows in set (0.00 sec)

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda CASE

Publicado por Isaias (1921 intervenciones) el 30/01/2020 16:47:32
¿Se debe tomar en cuenta el ID?, entonces debes hacer un DISTINCT por esa columna
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar