我有一个像下面这样的表格:
很不幸,这会返回以下结果:
Opp_ID Role_Name Role_User_Name
---------------------------------------
1 Lead Person_one
1 Developer Person_two
1 Developer Person_three
1 Owner Person_four
1 Developer Person_five
现在,我需要根据值将Role_Name列拆分为3个不同的列。 我需要确保没有NULL
值,因此表格应如下所示:
Opp_ID Lead Developer Owner
--------------------------------------------------
1 Person_one Person_two Person_four
1 Person_one Person_three Person_four
1 Person_one Person_five Person_four
我的代码目前是:
SELECT
ID,
CASE WHEN Role_Name = 'Lead' THEN Role_User_Name ELSE NULL END AS Lead,
CASE WHEN Role_Name = 'Developer' THEN Role_User_Name ELSE NULL END AS Developer,
CASE WHEN Role_Name = 'Owner' THEN Role_User_Name ELSE NULL END AS Owner
FROM
[table1]
WHERE
Role_Name IN ('Lead','Developer','Owner')
很不幸,这会返回以下结果:
Opp_ID Lead Developer Owner
-------------------------------------------
1 Person_one NULL NULL
1 NULL Person_two NULL
1 NULL Person_three NULL
1 NULL NULL Person_four
1 NULL Person_five NULL
我认为想要让这个工作起来,您需要将代码重新与自身连接,但我似乎无法让它正常工作。
ELSE NULL
中,为什么不写成ELSE Role_User_Name
呢?另外,在你最后一个例子中,开发人员的空值应该是什么结果? - Alexandre ElshobokshyPIVOT
,而是需要几个自连接。 - Shawn