【发布时间】:2016-11-11 05:59:08
【问题描述】:
我尝试了很多来研究这个问题。最终归结为导致此“已添加具有相同密钥的项目。”,我相信相同的密钥已经存在,例如 a.field01 和 b.field02。
这里是代码
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
当我在 SP 上方调用 SSRS 时,所有内容都会加载,除了上面代码中的第 4 列“'Total Direct Activites HH:MM'”。
,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'
一旦我取消注释这部分代码,它就会给我“已添加具有相同键的项目”。刷新 SSRS 数据集时出错。
请帮忙。
【问题讨论】:
标签: sql tsql stored-procedures reporting-services