Объединяет несколько условий с каждым результатом условия - PullRequest
0 голосов
/ 09 октября 2018

Я хочу получить подробную информацию о каждом результате условия как истинное или ложное, используемое в соединении.Например, ниже приведен случай

select emp.emp_id,emp.emp_name,hr.department,hr.salary 
from employee emp left outer join HR
on emp.empId=HR.emp_id 
and emp.emp_name=HR.emp_name
and emp.department=hr.department
and emp.salary=hr.salary;

. Теперь допустим, что первое условие соединения emp_id равно true, а остальные - false.Я хочу получить вывод как

emp.emp_id,emp.emp_name,hr.department,hr.salary

true,false,false,false

, и если первые два условия верны, вывод должен быть

true,true,false,false

и так далее.Пожалуйста, игнорируйте дизайн базы данных здесь, так как он взят только в качестве примера.Спасибо

Jafery

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Может быть, вы можете попробовать:

SELECT CASE WHEN emp.emp_id = HR.emp_id THEN 'True' ELSE 'False' as [emp_id],
CASE WHEN emp.emp_name = HR.emp_name THEN 'True' ELSE 'False' as [emp_name],
CASE WHEN emp.department = HR.department THEN 'True' ELSE 'False' as [department],
CASE WHEN emp.salary = HR.salary THEN 'True' ELSE 'False' as [salary],
from employee emp left outer join HR
on emp.empId=HR.emp_id 
and emp.emp_name=HR.emp_name
and emp.department=hr.department
and emp.salary=hr.salary
0 голосов
/ 09 октября 2018

Это может быть в соответствии с тем, что вы хотите сделать здесь:

SELECT
    CASE WHEN EXISTS (SELECT 1 FROM HR WHERE emp.empId = HR.empID)
         THEN 'true' ELSE 'false' END AS emp_id,
    CASE WHEN EXISTS (SELECT 1 FROM HR WHERE emp.emp_name = HR.emp_name)
         THEN 'true' ELSE 'false' END AS emp_name,
    CASE WHEN EXISTS (SELECT 1 FROM HR WHERE emp.department = HR.department)
         THEN 'true' ELSE 'false' END AS department,
    CASE WHEN EXISTS (SELECT 1 FROM HR WHERE emp.salary = HR.salary)
         THEN 'true' ELSE 'false' END AS salary
FROM employee emp;

Каждый из тестов CASE с EXISTS операторами, для записи в таблице employee, HR таблица, чтобы увидеть, может ли она найти хотя бы одну подходящую запись для этого конкретного столбца.

Обратите внимание, что этот ответ может не отражать фактическое соединение, где запись в employee может потенциально соответствовать несколько записей в HR.Но в этом случае неясно определено, что будет означать совпадение одного или только одного столбца.

...