error-返回查询时,每列必须具有唯一的名称

时间:2015-07-21 18:19:59

标签: sql sql-server visual-studio tsql reporting-services

我正在尝试使用以下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

我收到此错误 -

  

“已添加具有相同键的项目。”

1 个答案:

答案 0 :(得分:1)

您在SELECT查询中缺少两个Case语句的列别名。由于SSRS仅使用列名作为键,而不是表+列,因此它很窒息。

Refer HereHere以及Here also

SELECT ca.callingpartynumber, ca.originalcalledpartynumber, 
    CASE WHEN calledpartylastname IS NOT NULL  
            THEN ca.calledpartylastname + ',' + calledpartyfirstname 
         ELSE p1.name END AS calledpartylastname,
    p1.location, 
    p1.dept, 
    p1.title,
    CASE WHEN callingpartylastname IS NOT NULL 
            THEN ca.callingpartylastname + ',' + callingpartyfirstname 
        ELSE p3.name END AS callingpartylastname
    ...
    ...