-1

我有 2 个表需要根据一个键合并。

表格1

在此处输入图像描述

表 2

在此处输入图像描述

输出:

在此处输入图像描述

使用的查询:

select  TB1.EMP_NUM , TB1.EMP_NAME , TB1.EMP_SALARY , TB2.EMP_AGE 
            from EMPLOYEE_MERGE_1 tb1 full outer join EMPLOYEE_MERGE_2 tb2 ON TB1.EMP_NUM = TB2.EMP_NUM  

预期输出:

对于最后一条记录,应该从表 1 填充 Emp_num、emp_name、emp_salary,因为我使用的是完全外连接,它使其为空。我可以将空检查添加到键列(emp_num)和表 1(emp_name)中的列& emp_salary) 并相应地填充,但担心它是否包含实际的空值......

4

3 回答 3

0
select TB1.EMP_NUM , coalesce(TB1.EMP_NAME,TB2.EMP_NAME) , TB1.EMP_SALARY , TB2.EMP_AGE 
from EMPLOYEE_MERGE_1 tb1 full outer join EMPLOYEE_MERGE_2 tb2 
ON TB1.EMP_NUM = TB2.EMP_NUM
于 2013-10-08T18:09:23.717 回答
0

尝试这个:

DECLARE @list1 AS TABLE (Emp_Num INT, Emp_Name VARCHAR(100), Emp_Salary MONEY)
DECLARE @list2 AS TABLE (Emp_Num INT, Emp_Name VARCHAR(100), Emp_Age INT)

INSERT INTO @list1 
          SELECT 1, 'TOM', 5000
UNION ALL SELECT 2, 'BRIAN', 6000
UNION ALL SELECT 3, 'RAM', 8000
UNION ALL SELECT 4, 'DINESH', 8000


INSERT INTO @list2 
          SELECT 1, 'TOM', 20
UNION ALL SELECT 2, 'BRIAN', 40
UNION ALL SELECT 3, 'RAM', 60
UNION ALL SELECT 5, 'SARATH', 90

;WITH list AS (
SELECT Emp_Num, Emp_Name FROM @list1
UNION
SELECT Emp_Num, Emp_Name FROM @list2
)
SELECT L0.Emp_Num, L0.Emp_Name, EMP_SALARY = L1.Emp_Salary, EMP_AGE = L2.Emp_Age
FROM list AS L0
LEFT OUTER JOIN @list1 L1 ON L1.Emp_Num = L0.Emp_Num
LEFT OUTER JOIN @list2 L2 ON L2.Emp_Num = L0.Emp_Num



-- OUTPUT 
Emp_Num   Emp_Name    EMP_SALARY  EMP_AGE
1         TOM         5000.00     20
2         BRIAN       6000.00     40
3         RAM         8000.00     60
4         DINESH      8000.00     NULL
5         SARATH      NULL        90
于 2013-10-08T18:23:14.247 回答
0

那这个呢?如果 TB1 中没有匹配的行,这将为您提供 EMP_NUM 和 EMP_NAME 的 TB2 值。

select COALESCE(TB1.EMP_NUM, TB2.EMP_NUM) AS EMP_NUM, 
    COALESCE(TB1.EMP_NAME, TB2.EMP_NAME) AS EMP_NAME, 
    TB1.EMP_SALARY, TB2.EMP_AGE 
from EMPLOYEE_MERGE_1 tb1 full outer join EMPLOYEE_MERGE_2 tb2 ON TB1.EMP_NUM = TB2.EMP_NUM 
于 2013-10-08T18:06:42.870 回答