[英]How can I relate to separate values as if they were one and that it will be reflected in my aggregated function of sum in postgesql
[英]How can I Pivot my Table and separate 'aggregated' fields with a Comma?
我想對我的數據進行透視。
我的初始查詢如下:
SELECT
pre_memberidyominame As FullName
,LocalizedLabel AS 'Role'
,COALESCE(pre_salesorderid,pre_opportunityid) AS ActivityGuid
FROM [dbo].[pre_salesteammember] STM
LEFT JOIN OptionSetMetadata OS
ON STM.pre_rolecode = OS.[Option]
AND EntityName = 'pre_salesteammember'
結果 :
FullName | Role | ActivityGuid
Peter Account Manager 1
Laura Account Manager 1
Frank Lead BDM 2
Tom IT Manager 2
Sander PR Specialist 3
我希望實際結果如下所示:
Account Manager | Lead BDM | ActivityGuid
Peter, Laura NULL 1
NULL FRANK 2
NULL NULL 3 --> or could just be gone --> Last column should have Unique Values
我嘗試使用 PIVOT,但我似乎無法到達那里! 有什么幫助嗎?
您可以進行條件聚合:
select
max(case when localizedlabel = 'Account Manager' then pre_memberidyominame end) account_manager,
max(case when localizedlabel = 'Lead BDM' then pre_memberidyominame end) lead_bdm,
coalesce(pre_salesorderid,pre_opportunityid) as activityguid
from [dbo].[pre_salesteammember] stm
left join optionsetmetadata os
on stm.pre_rolecode = os.[option]
and entityname = 'pre_salesteammember'
group by coalesce(pre_salesorderid,pre_opportunityid)
如果要聚合每個活動的名稱,可以使用string_agg()
而不是max()
(從 SQL Server 2017 開始可用):
select
string_agg(case when localizedlabel = 'Account Manager' then pre_memberidyominame end, ', ') account_manager,
string_agg(case when localizedlabel = 'Lead BDM' then pre_memberidyominame end, ', ') lead_bdm,
coalesce(pre_salesorderid,pre_opportunityid) as activityguid
from [dbo].[pre_salesteammember] stm
left join optionsetmetadata os
on stm.pre_rolecode = os.[option]
and entityname = 'pre_salesteammember'
group by coalesce(pre_salesorderid,pre_opportunityid)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.