Intentaré hacer que mi pregunta suene lo menos confusa posible. Me disculpo de antemano por cualquier error de redacción cuando intento formular mi pregunta lo mejor que puedo:¿Complemento de una unión SQL? Se necesita ayuda de T-SQL
Uso de T-SQL Necesito escribir una declaración de combinación que me proporcione todos los resultados que coincidan en la tabla A y la tabla B
Y (!)
otra instrucción de combinación (o una continuación de la primera unión) que devuelve todos los resultados de la tabla a que no tenían un partido en el cuadro B, pero en este segundo conjunto de resultados Necesito tener una de las columnas establecidas en "N/A" para identificar los registros que no coinciden.
En otras palabras, necesito algo que devuelva todo en la tabla A, pero también identifique las filas que no coinciden en B. Esa información se utiliza en un informe.
Esto es lo que tengo hasta ahora:
tengo la primera parte hecho:
LEFT OUTER JOIN dbo.chart B
ON B.UserName = A.user_name
que me pone los registros coincidentes y sólo los registros coincidentes
He intentado añadir este segundo unirse:
JOIN dbo.chart
ON NOT EXISTS (select * from B.UserName = A.user_name)
Esperando que me daría los registros no coincidentes (yo estaba planea usar REEMPLAZAR en la columna de interés para etiquetar esa columna "N/A"), pero hay algo claramente erróneo en mi sintaxis, ya que genera excepciones.
Mi pregunta es qué necesito cambiar para obtener los resultados que necesita. Sé que necesito tener al menos una unión ya que tengo otra parte de la consulta para trabajar. Simplemente no sé si necesito que esa unión devuelva ambos conjuntos de datos. De hecho, necesito una segunda para los registros que no coinciden.
Espero que esto no sea demasiado confuso. Cualquier ayuda sería muy apreciada.
¡Gracias!
Actualización: Simplemente me gustaría enfatizar que el motivo por el que consideré usar una segunda unión en lugar de obtener todos los resultados a la vez es porque necesito identificar y etiquetar correctamente las filas que no coinciden con todo lo que Regreso.
'join' externa izquierda deben darle lo que quiere. Todas las filas de A y unidas a B donde hay una coincidencia. ¿Tiene una condición WHERE en alguna columna de la tabla B? Si lo hace, eso haría que la unión externa fuera una unión interna y necesita mover la verificación contra las columnas en la tabla B a la cláusula join. –
Gracias por su respuesta, Mikael. Lo más importante que quiero lograr (y la razón principal por la que consideré usar una segunda combinación) es poder identificar y etiquetar qué filas coinciden y cuáles no. – user1179071
No necesita una unión adicional para eso. Use 'coalesce' como lo sugiere Mark en un comentario a la respuesta de Dems. –