【发布时间】:2019-01-01 05:19:37
【问题描述】:
我正在尝试在 SQL Server 中生成一份报告,以显示每个销售活动中出现电话号码的情况。
想要的结果:
Phonenumber | Area Code | Campaign 1 | Campaign 2 (if applicable) etc...
我有以下代码:
with cids as
(
select distinct
a.outbound_cid as [CID],
a.areacode as [AreaCode],
a.campaign_id as [Campaign]
from
vicislave...vicidial_campaign_cid_areacodes a
join
LDS_SALES_CAMPAIGNS b on a.campaign_id = b.campaign_id
)
select *
from cids
order by cid
返回此结果(数据示例):
在这个例子中,我会得到 p>
2012444340 201 ZEPTR ZEACC ZBEASTC ZEPRR InBnd2 ZEPSC ZEJCC ZEJSC ZEPCC ZEASC
我以前没有使用过交叉表,但它似乎可以工作,但我无法让它像我一样工作。显然,我可以做每一个的 MIN 和 MAX,但我不知道有一种方法可以将数据放入一行,即使使用 Excel 之类的东西,也不需要手动执行,这些结果为 1110,我真的没有时间去做。
不要模仿我从下面得到的帮助,这里是有效的确切代码:
select distinct
a.outbound_cid as [CID],
a.areacode as [AreaCode],
a.campaign_id as [Campaign]
into
#CIDs
from
vicislave...vicidial_campaign_cid_areacodes a
join
LDS_SALES_CAMPAIGNS b on a.campaign_id = b.campaign_id
select distinct
CID,
areacode,
Campaign = stuff((select ', ' + c2.campaign
from #CIDs c2
where c2.CID = c.CID
for xml path(''), type).value('.', 'nvarchar(MAX)'), 1, 1, '')
from
#cids c
drop table #CIDs
【问题讨论】:
-
This 应该会有所帮助。你基本上必须使用
GROUP_CONCAT -
@GordonLinoff 我做了 - SQL。猜猜我可以使用基础 MS SQL。
标签: sql sql-server database crosstab