Básicamente, quiero CONTAR UN CASO cuando los valores están presentes en 2 columnas.

Por ejemplo:

SELECT
   COUNT
      (CASE WHEN 1.sample AND 2.sample IN ('a','b','c')
       THEN 1
       ELSE NULL
       END
      )   AS CASE
FROM table1 AS 1
INNER JOIN table2 AS 2
...

Mensaje:

La conversión falló al convertir el valor varchar '08: 12.06 'al tipo de datos int. Advertencia: el valor nulo se elimina mediante un agregado u otra operación SET.

Entiendo lo que desencadena el error, simplemente no conozco una solución para contar el caso cuando los valores están presentes en ambas columnas.

-2
kazzi 15 nov. 2017 a las 23:40

2 respuestas

La mejor respuesta

¿Puedes probar esto y ver si funciona? Creo que esto es lo que estás buscando.

SELECT
   SUM
      (CASE WHEN 1.sample IN ('a','b','c') AND 2.sample IN ('a','b','c')
       THEN 1
       ELSE 0
       END
      )   AS CASE
FROM table1 AS 1
INNER JOIN table2 AS 2
1
SS_DBA 15 nov. 2017 a las 20:59

Debe enumerar las columnas por separado para compararlas. Por lo general, especifico una columna para contar y no es necesario poner NULL para la condición else.

SELECT
   COUNT
      (CASE WHEN 1.sample IS NULL OR 2.sample IS NULL THEN 0 
            WHEN (    1.sample IN ('a','b','c')
                  AND 2.sample IN ('a','b','c')
                 )
       THEN 1.sample
       END
      )   AS CASE
FROM table1 AS 1
INNER JOIN table2 AS 2 ON....
1
Zorkolot 15 nov. 2017 a las 20:50