Quiero obtener solo filas que tengan un valor NULLy algún otro valor que no sea NULLpara una columna de nombre de usuario en particular.
Si ambas filas tienen un valor nulo para ese nombre de usuario en particular o ambos tienen algunos valores distintos de nulo, entonces no debería aparecer en la salida. Si hay más de dos filas para el mismo nombre de usuario con nulo y algún otro valor, entonces deberían aparecer.
A continuación se muestra un ejemplo de muestra y salida. ¿Cómo se puede hacer usando la consulta SQL?
+----------+-------+
| username | col2 |
+----------+-------+
| a | abc |
| a | ef |
| b | null |
| b | null |
| c | der |
| c | null |
+----------+-------+
salida
+----------+------+
| username | col2 |
+----------+------+
| c | der |
| c | null |
+----------+------+
sql-server
t-sql
Investigador de TI
fuente
fuente

d, dery 2 cond, null?e, one,e, twoy 2 o más cone, null?Respuestas:
Debería poder usar la agregación condicional para obtener el nombre de usuario con un valor
col2y también connull.Sugeriría usar una cláusula HAVING con las condiciones. La consulta sería similar a:
Ver SQL Fiddle con Demo . Esta consulta agrupa sus datos por cada nombre de usuario y luego utiliza la lógica condicional para verificar si
col2cumple con las dos condiciones que desea, dondecol2no es nulo ycol2es nulo.Luego puede usar esto en una subconsulta, etc. para obtener los valores
usernameycol2:Ver SQL Fiddle con Demo .
Si tiene más de una
col2fila con ambosnully otro valor, solo necesita modificar laHAVINGcláusula ligeramente:Ver SQL Fiddle con Demo
fuente
HAVINGcláusula para que sea>=1- sqlfiddle.com/#!3/8af72/2Otra solución:
En una vena lógica similar:
Aún otra:
fuente
Solo otra forma de hacerlo:
fuente
Este también funciona. Demostración de SQL Fiddle
Obtengo C1 como las filas totales para cada nombre de usuario, C2 como las filas nulas totales para cada nombre de usuario y comparo estos valores más adelante.
fuente
Usaría la subconsulta para seleccionar esos nombres de usuario como:
fuente
Lo intenté con este ...
fuente
col2no estará en la salida.