我是 MS SQL 的新手,所以请多多包涵。
我想根据每个员工的身份获取员工的公司代码和公司简称,并将其存储在一个表中。
如果Emp_Status = FT
,它将得到Co_Code
并Co_Shortname
来自Table 1
。ELSE if Emp_Status = PT
,它将获取Co_Code
并且Co_Shortname
从Table 2
USERNAME 彼此相等的位置。
我有两张桌子。
Table 1:
EmpID |Co_Code |Co_ShortName |Emp_Status
WC11 |01 |AA1 |FT
KC22 |02 |BB1 |PT
MA33 |03 |CC1 |FT
Table 2:
EmpID |Co_Code |Co_ShortName |Emp_Status
WC11 |04 |DD1 |FT
KC22 |05 |EE1 |PT
MA33 |06 |FF1 |FT
输出将是
EmpID |Co_Code |Co_ShortName |Emp_Status
WC11 |01 |AA1 |FT
KC22 |05 |EE1 |PT
MA33 |03 |CC1 |FT
我不确定是否需要使用 CASE 或 IF 语句,因为我正在从表 1 中获取其他字段。
我知道这是不正确的,但这就是我所拥有的:
SELECT EmpID , CASE
WHEN Table1.EmpStatus = 'FT'
THEN (SELECT Co_Code from Table 1)
WHEN Table1.EmpStatus = 'PT'
THEN (SELECT Co_Code from Table 2 where Table1.EmpID = Table2.EmpID)
END
请帮忙
版本 1:
输出:
版本 2:您可以将逻辑放在存储过程中:
带有 UNION ALL 的版本 3
dbfiddle在这里