2016-07-08 22 views
0

Ich habe viel versucht, um in dieses Problem zu graben. kam schließlich zu dem Punkt, wo es das verursacht "Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.", was ich glaube, dass derselbe Schlüssel bereits vorhanden ist, für ein Beispiel a.field01 und b.field02.Fehler erhalten: Ein Artikel mit dem gleichen Schlüssel wurde bereits hinzugefügt - Fehler/Warnung im SSRS-Bericht

Hier ist der Code

ALTER PROCEDURE [dbo].[Payroll_Report] 

     @Office NVARCHAR(4000), 
     @Servicetype NVARCHAR(4000), 
     @Start DATETIME, 
     @End DATETIME 
AS 
BEGIN 
    SET NOCOUNT ON; 

    Select 
    a.owneridname 
    ,a.[serviceidname] 
    ,count(case 
      when 
       a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' 
      then 
       a.serviceid 
      end) As 'Total# Confirmed Activities' 

    ,CONVERT(NVARCHAR(16), 
      FLOOR((sum(case 
      when 
       a.serviceidname not like 'Indirect' and a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' 
      then  
       a.[scheduleddurationminutes] 
      end))/60.0)) 
      + N':' + CONVERT(NVARCHAR(5), CONVERT(INTEGER, 
      FLOOR((sum(case 
      when 
       a.serviceidname not like 'Indirect' 
      then  
       a.[scheduleddurationminutes] 
      end)) % 60.0))) as 'Total Direct Activites HH:MM' 

    ,CONVERT(NVARCHAR(16), 
      FLOOR((sum(case 
      when 
       a.serviceidname like 'Indirect' and a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' 
      then  
       a.[scheduleddurationminutes] 
      end))/60.0)) 
      + N':' + CONVERT(NVARCHAR(5), CONVERT(INTEGER, 
      FLOOR((sum(case 
      when 
       a.serviceidname like 'Indirect' 
      then  
       a.[scheduleddurationminutes] 
      end)) % 60.0))) as 'Total Indirect Activites HH:MM' 


     ,CONVERT(NVARCHAR(16), 
      FLOOR((sum(case 
      when 
       a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' 
      then  
       a.[scheduleddurationminutes] 
      end))/60.0)) 
      + N':' + CONVERT(NVARCHAR(5), CONVERT(INTEGER, 
      FLOOR((sum(case 
      when 
       a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' 
      then  
       a.[scheduleddurationminutes] 
      end)) % 60.0))) as 'Total Direct Activites HH:MM' 

     ,Sum(Case 
       when a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' and a.serviceidname not like 'Indirect' 
       then 
        b.new_approvedmileage 
       end 
      ) as 'Total Approved Mileage (KMs)' 


     ,CONVERT(NVARCHAR(16), 
      FLOOR((sum(case 
      when 
       b.new_expensestatusname like 'Approved' 
      then  
       b.new_approvedtravel 
      end))/60.0)) 
      + N':' + CONVERT(NVARCHAR(5), CONVERT(INTEGER, 
      FLOOR((sum(case 
      when 
       b.new_expensestatusname like 'Approved' 
      then  
       b.new_approvedtravel 
      end)) % 60.0))) as 'Total Approved Travel Time HH:MM' 


     ,count(Case 
       when b.new_expensestatusname like 'Approved' and b.new_expensetypeidname like 'Stipends' 
       then 
        b.new_expensetypeidname 
       end 
      ) As 'Total #Approved Stipends' 

from 
    [dbo].[FilteredServiceAppointment] a 
join 
    FilteredSystemUser fu 
on a.ownerid = fu.systemuserid 
join 
    .[dbo].[FilteredNew_expenses] b 
on 
    fu.systemuserid = b.new_provider 
where 
     a.scheduledstart BETWEEN @Start AND @End 
     AND b.new_serviceactivityid is null 
     AND a.siteidname IN (SELECT value FROM dbo.udf_Split(@Office, ',')) 
     AND a.serviceidname IN (SELECT value FROM dbo.udf_Split(@Servicetype, ',')) 
group by 
    a.owneridname 
    ,a.[serviceidname] 


END 

everythign Lasten, wenn ich oben SP in SSRS nennen außer 4. Spalte " 'Total Direct Activites HH: MM'", die unten von oben Code.

,CONVERT(NVARCHAR(16), 
     FLOOR((sum(case 
     when 
      a.serviceidname not like 'Indirect' and a.[statuscodename] like 'Confirmed' or a.new_approvalstatusname like 'Approved' 
     then  
      a.[scheduleddurationminutes] 
     end))/60.0)) 
     + N':' + CONVERT(NVARCHAR(5), CONVERT(INTEGER, 
     FLOOR((sum(case 
     when 
      a.serviceidname not like 'Indirect' 
     then  
      a.[scheduleddurationminutes] 
     end)) % 60.0))) as 'Total Direct Activites HH:MM' 

Sobald ich diesen Teil des Codes Kommentar- es gibt mir „Ein Element mit demselben Schlüssel wurde bereits hinzugefügt.“ Fehler, wenn ich den Datensatz von SSRS aktualisiere.

BITTE HILFE.

Antwort

1

Sie haben 2 Spalten mit dem gleichen genauen Namen Total Direct Activites HH:MM. SSRS kann damit nicht umgehen. Ändere eins, dann sollte das funktionieren.

+0

Oh Mann, vielen Dank. Ich denke, ich muss meine Brille überprüfen. LOL. – user2040021

+0

Wenn ich ein Nickel für jedes Mal habe, das mir passiert, hätte ich einen Dollar (USD). :) –

Verwandte Themen