【发布时间】:2015-10-11 08:40:18
【问题描述】:
我正在尝试使用以下 SQL 查询运行报告服务
select ca.callingpartynumber, ca.originalcalledpartynumber, case
when calledpartylastname is not null then ca.calledpartylastname + ',' + calledpartyfirstname
else p1.name end,
p1.location, p1.dept, p1.title,
case
when callingpartylastname is not null then ca.callingpartylastname + ',' + callingpartyfirstname
else p3.name end
from calldata.calldetailreport ca
join ps_bc_peoplesource_base p1 on ca.originalcalledpartynumber = replace(p1.bc_int_phone, '-', '')
left outer join ps_bc_peoplesource_base p3 on ca.callingpartynumber = replace(p1.bc_int_phone, '-', '')
where originalcalledpartynumber in (select replace(bc_int_phone, '-', '') internal_modified from ps_bc_peoplesource_base where bc_lan_id = 'f7c')
--and datetimedisconnect between @startdate and @enddate --1221
我收到此错误-
“已添加具有相同密钥的项目。”
【问题讨论】:
-
这个问题是因为有 2 列与您选择的名称相同。确保更改最终名称,并且当您在 Management Studio 中运行语句时,每一列都有一个唯一的名称。如果两个不同表中的两列,并且您在 Select Clause 中添加了它们,则为每个线圈添加 ALIAS 名称
-
您是否尝试为您的 2 个
case ... end语句提供显式别名?case ... end as <alias name>. -
谢谢!但是现在我收到一条错误消息 - “文本框'finalcalledpartynumber' 的值表达式引用了字段'finalcalledpartynumber'。报告项只能引用当前数据库范围......”这是什么意思?再次感谢很多!
标签: sql sql-server visual-studio tsql reporting-services