我有以下简单查询:
SELECT
Company.Company_Name,
Company_Team.Team_Role_Recid
FROM
Company
INNER JOIN
Company_Team ON Company_Team.Company_RecID = Company.Company_RecID
Team_Role_Recid的值可以是:
1, 2, 3 or NULL
或组合。可以有1和2,或2和3,或只有2,或根本没有,等等。你明白了。
我希望始终列出每个Company_Name结果,但只显示Team_Role_Recid(如果它是1),否则将其替换为'None Assigned'。
我在where子句中尝试了各种方法,甚至尝试了一个子查询,在select语句中使用CASE WHEN进行“无分配”更改但没有运气。
干杯
[编辑]
我可能没有尽可能清楚。我将添加此内容以尝试使其更清晰。
如果是1,我需要列出公司和Team_Role_Recid。如果Team_Role_Recid不是1,则需要说'None Assigned'。
CompanyName TeamRecID
Company A 1
Company B None Assigned
Company C None Assigned
Company D 1
Company E 1
Company F None Assigned
公司的Team_Role_Recid记录可以是2,或者只是3,或者数据库中的1和2或1和3等,但我想按上面的方式显示它。
希望有所帮助。
答案 0 :(得分:1)
使用LEFT JOIN
代替,COALESCE
代替NULL
值:
SELECT a.Company_Name,
COALESCE(b.Team_Role_Recid, 'None Assigned') RecID
FROM Company a
LEFT JOIN Company_Team b
ON b.Company_RecID = a.Company_RecID
-- WHERE b.Team_Role_Recid = 1
答案 1 :(得分:0)
试试这个
SELECT a.Company_Name,CASE WHEN isnull(b.Team_Role_Recid,0) = 1 then b.Team_Role_Recid else 'None Assigned' end
FROM Company a
LEFT JOIN Company_Team b
ON b.Company_RecID = a.Company_RecID
答案 2 :(得分:0)
你在找这个吗?
Declare @Company table(Company_Name Varchar(50),Company_RecID int)
Insert Into @Company
Select'Company1', 1 Union All Select 'Company2', 2 Union All
Select 'Company3',3 Union All Select 'Company4',4
Declare @Company_Team table(Company_RecID int,Team_Role_Recid Varchar(10) null)
Insert Into @Company_Team
Select 1,1 Union All
Select 1,2 Union All Select 1,3 Union All Select 2, Null Union All
Select 3,1 Union All Select 4,2 Union All Select 4,3
;with cte as(
SELECT
c.Company_Name,
ct.Team_Role_Recid,
status = CASE WHEN ct.Team_Role_Recid = 1 then '1' else 'None Assigned' end
FROM @Company c
LEFT JOIN @Company_Team ct ON ct.Company_RecID = c.Company_RecID )
Select distinct Company_Name,Team_Role_Recid from (
SELECT Company_Name,Team_Role_Recid FROM cte WHERE Company_Name NOT IN (SELECT Company_Name FROM cte WHERE status='None Assigned')
Union All
SELECT Company_Name,'None Assigned' FROM cte WHERE status='None Assigned')x
Company_Name Team_Role_Recid
Company1 None Assigned
Company2 None Assigned
Company3 1
Company4 None Assigned