首页 > 解决方案 > SQL Server 查询替换列中的文本

问题描述

我的数据库中有一些表。

首先是EmployeesEmployeedId(PK), Name, Email, ContactNo, password, salary, 和employeestatus( FOREIGN KEY REFERENCES Status(id))组成

第二个表是Address有列的

AddressId (PK), Id (FOREIGN KEY REFERENCES Employees(EmployeeId), 
Addressstatus (FOREIGN KEY REFERENCES CheckListAction(id)), EmployeeAddress

CheckListActionid(PK) 和value(YES, NO, N/A)

Statusid(pk) 和value(A 表示活跃,I 表示不活跃,W 表示等待)

现在我创建了一个网格,显示来自EmployeesAddress表的数据。这是使用的查询:

SELECT
    e.name, e.email, e.contactno, 
    a.employeeaddress, e.salary, e.empployeestatus
FROM 
    Employees e
LEFT OUTER JOIN 
    Address a
WHERE
    a.addressstatus = 1

现在我的网格将employeestatus 显示为A、I 或W。用户不知道A、I 或W 的含义,所以我想向用户显示ACTIVE、INACTIVE 或WAITING 的全名。那么如何修改上面的查询以显示全名而不仅仅是字母。

标签: sql-serverjoin

解决方案


您应该按照 jean 的建议阅读 CASE。这是微软页面: https ://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-ver15

这是我的快速解决方案:

SELECT
    e.name, e.email, e.contactno, 
    a.employeeaddress, e.salary,
    CASE e.empployeestatus
    WHEN 'A' THEN 'ACTIVE'
    WHEN 'I' THEN 'INACTIVE'
    WHEN 'W' THEN 'WAITING'
    END
FROM 
    Employees e
LEFT OUTER JOIN 
    Address a
WHERE
    a.addressstatus = 1

推荐阅读