USP_REPORT_AFFILIATE
Returns data for the sponsorship affiliate report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@AFFILIATE | nvarchar(255) | IN | |
@DIMENSION1 | nvarchar(100) | IN | |
@DIMENSION1VALUE | nvarchar(255) | IN | |
@DIMENSION1VALUE3 | nvarchar(255) | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@DATETYPE | nvarchar(15) | IN | |
@DATERANGEDISPLAY | nvarchar(100) | IN | |
@NEWASSIGNMENT | bit | IN | |
@TERMINATIONS | bit | IN | |
@TRANSFERIN | bit | IN | |
@TRANSFEROUT | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_AFFILIATE (
@AFFILIATE as nvarchar(255) = null,
@DIMENSION1 as nvarchar(100) = null,
@DIMENSION1VALUE as nvarchar(255) = null,
@DIMENSION1VALUE3 as nvarchar(255) = null,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@DATETYPE nvarchar(15) = null,
@DATERANGEDISPLAY nvarchar(100) = null,
@NEWASSIGNMENT bit = null,
@TERMINATIONS bit = null,
@TRANSFERIN bit = null,
@TRANSFEROUT bit = null
)
with execute as owner
as
set nocount on;
declare @SQLTOEXEC nvarchar(max);
declare @FROMCLAUSE nvarchar(max);
declare @COLUMNSELECT nvarchar(max);
declare @WHERECLAUSE nvarchar(max);
declare @REVENUEJOIN nvarchar(max);
declare @GROUPBYCLAUSE nvarchar(max);
declare @SELECT nvarchar(max);
declare @FROM nvarchar(max);
declare @COLUMN nvarchar(max);
declare @WHERE nvarchar(max);
declare @GROUPBY nvarchar(max);
declare @LOCATIONCOUNT tinyint = 0;
declare @LOCATIONTYPEENUM tinyint = 2;
declare @SQLTOEXEC1 nvarchar(max);
declare @SQLTOEXEC2 nvarchar(max);
declare @SQLTOEXEC3 nvarchar(max);
declare @SQLTOEXEC4 nvarchar(max);
---Blank value data columns
declare @DATECOLTEMP nvarchar(800);
declare @DIMENSIONCOLUMNS nvarchar(100);
declare @RESULTSELECTION nvarchar(2000);
set @DATECOLTEMP = dbo.UFN_REPORT_BUILD_DATECOL_TABLE_STRING(@DATETYPE)
-- add dimtransaction as always a select column in the result
set @DIMENSIONCOLUMNS = 'AFFILIATE, DIMTRANSACTION'
--- Build query strings
set @FROMCLAUSE = 'from dbo.SPONSORSHIP SP inner join dbo.SPONSORSHIPAFFILIATEPROGRAM SA on SP.SPONSORSHIPPROGRAMID = SA.ID ';
set @WHERECLAUSE = 'where (@STARTDATE is null or SPT1.TRANSACTIONDATE >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)) ' +
' and (@ENDDATE is null or SPT1.TRANSACTIONDATE <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE)) ';
set @COLUMNSELECT = 'select dbo.UFN_REPORT_PROCESSDATE_PARAM('+ @DATETYPE + ',SPT1.TRANSACTIONDATE) DATECOL, datename(year, SPT1.TRANSACTIONDATE) YEARCOL';
-- count how many dimension parameters have location type specified
if @DIMENSION1 is not null and @DIMENSION1 = @LOCATIONTYPEENUM
begin
set @LOCATIONCOUNT = @LOCATIONCOUNT + 1;
end
if @AFFILIATE is not null
begin
set @COLUMNSELECT = @COLUMNSELECT + ', CO.NAME as AFFILIATE '
set @FROMCLAUSE = @FROMCLAUSE + ' inner join dbo.CONSTITUENT CO on SA.AFFILIATEID = CO.ID '
set @WHERECLAUSE = @WHERECLAUSE + ' and SA.ID = @AFFILIATE'
end
else
begin
set @COLUMNSELECT = @COLUMNSELECT + ', CO.NAME as AFFILIATE '
set @FROMCLAUSE = @FROMCLAUSE + ' inner join dbo.CONSTITUENT CO on SA.AFFILIATEID = CO.ID '
end
if @GROUPBYCLAUSE is not null
begin
set @GROUPBYCLAUSE = @GROUPBYCLAUSE + ', AFFILIATE';
end
else
begin
set @GROUPBYCLAUSE = 'AFFILIATE';
end
-- only process dimension if not null and not Location Type
if @DIMENSION1 is not null
begin
-- append it to the columns in the result
set @DIMENSIONCOLUMNS = @DIMENSIONCOLUMNS + ', DIMENSION1'
if @DIMENSION1 <> @LOCATIONTYPEENUM
begin
exec dbo.USP_REPORT_PROCESSDIMENSION
@DIMENSION1,
'@DIMENSION1VALUE',
@FROM output,
@COLUMN output,
@WHERE output,
'DIMENSION1'
if @FROM is not null and @DIMENSION1 <> 15
begin
set @FROMCLAUSE = @FROMCLAUSE + @FROM;
end
set @COLUMNSELECT = @COLUMNSELECT + @COLUMN;
set @WHERECLAUSE = @WHERECLAUSE + @WHERE + ' and @DIMENSION1VALUE3 is null';
if @GROUPBYCLAUSE is not null
begin
set @GROUPBYCLAUSE = @GROUPBYCLAUSE + ', DIMENSION1';
end
else
begin
set @GROUPBYCLAUSE = 'DIMENSION1';
end
--
-- set these to null for the next row
--
set @FROM = '';
set @COLUMN = '';
set @WHERE = '';
end
end
else
begin
set @WHERECLAUSE = @WHERECLAUSE + ' and @DIMENSION1VALUE is null and @DIMENSION1VALUE3 is null';
end
--PROCESS NEWASSIGNMENTS
if @NEWASSIGNMENT = 1
begin
--deal with the reason from clause - add it after the transaction join
if @DIMENSION1 = 15
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.TARGETSPONSORSHIPID inner join dbo.SPONSORSHIPREASON SR on SR.ID = SPT1.SPONSORSHIPREASONID ';
end
else
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.TARGETSPONSORSHIPID ';
end
set @WHERE = @WHERECLAUSE + ' and ACTIONCODE=0 ';
set @COLUMN = @COLUMNSELECT + ', ''Acquisitions'' as DIMTRANSACTION '
if @GROUPBYCLAUSE is not null
begin
set @GROUPBY = @GROUPBYCLAUSE + ', DIMTRANSACTION';
end
else
begin
set @GROUPBY ='DIMTRANSACTION';
end
-- handle processing of location types
If @LOCATIONCOUNT > 0
begin
exec dbo.USP_REPORT_PROCESSLOCATIONTYPE_DIMENSION
@LOCATIONCOUNT,
@DIMENSION1,
null,
null,
@COLUMN,
@FROM,
@WHERE,
@GROUPBY,
@SQLTOEXEC1 output
end
else
begin
set @SELECT = 'select count(*) CNT, DATECOL, YEARCOL, '+ @GROUPBY;
-- construct the sql query
set @SQLTOEXEC1 = @SELECT + ' from (' + @COLUMN + ' ' + @FROM + ' ' + @WHERE + ') as QRY group by DATECOL, YEARCOL, ' + @GROUPBY;
end
--insert into tudortest (str, date, sqlexec) values (@SQLTOEXEC1, getdate(),'Assignment');
end
--PROCESS TERMINATIONS
if @TERMINATIONS = 1
begin
--deal with the reason from clause - add it after the transaction join
if @DIMENSION1 = 15
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.CONTEXTSPONSORSHIPID inner join dbo.SPONSORSHIPREASON SR on SR.ID = SPT1.SPONSORSHIPREASONID ';
end
else
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.CONTEXTSPONSORSHIPID ';
end
set @WHERE = @WHERECLAUSE + ' and ACTIONCODE=3 ';
set @COLUMN = @COLUMNSELECT + ', ''Terminations'' as DIMTRANSACTION '
if @GROUPBYCLAUSE is not null
begin
set @GROUPBY = @GROUPBYCLAUSE + ', DIMTRANSACTION';
end
else
begin
set @GROUPBY ='DIMTRANSACTION';
end
-- handle processing of location types
If @LOCATIONCOUNT > 0
begin
exec dbo.USP_REPORT_PROCESSLOCATIONTYPE_DIMENSION
@LOCATIONCOUNT,
@DIMENSION1,
null,
null,
@COLUMN,
@FROM,
@WHERE,
@GROUPBY,
@SQLTOEXEC2 output
end
else
begin
set @SELECT = 'select count(*) CNT, DATECOL, YEARCOL, '+ @GROUPBY;
-- construct the sql query
set @SQLTOEXEC2 = @SELECT + ' from (' + @COLUMN + ' ' + @FROM + ' ' + @WHERE + ') as QRY group by DATECOL, YEARCOL, ' + @GROUPBY;
end
--insert into tudortest (str, date, sqlexec) values (@SQLTOEXEC3, getdate(),'Termination');
end
--PROCESS TRANSFER OUT
if @TRANSFEROUT = 1
begin
--deal with the reason from clause - add it after the transaction join
if @DIMENSION1 = 15
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.CONTEXTSPONSORSHIPID inner join dbo.SPONSORSHIPREASON SR on SR.ID = SPT1.SPONSORSHIPREASONID ';
end
else
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.CONTEXTSPONSORSHIPID ';
end
set @WHERE = @WHERECLAUSE + ' and ACTIONCODE in (1,7,8) ';
set @COLUMN = @COLUMNSELECT + ', ''Transfers out'' as DIMTRANSACTION '
if @GROUPBYCLAUSE is not null
begin
set @GROUPBY = @GROUPBYCLAUSE + ', DIMTRANSACTION';
end
else
begin
set @GROUPBY ='DIMTRANSACTION';
end
-- handle processing of location types
If @LOCATIONCOUNT > 0
begin
exec dbo.USP_REPORT_PROCESSLOCATIONTYPE_DIMENSION
@LOCATIONCOUNT,
@DIMENSION1,
null,
null,
@COLUMN,
@FROM,
@WHERE,
@GROUPBY,
@SQLTOEXEC3 output
end
else
begin
set @SELECT = 'select count(*) CNT, DATECOL, YEARCOL, '+ @GROUPBY;
-- construct the sql query
set @SQLTOEXEC3 = @SELECT + ' from (' + @COLUMN + ' ' + @FROM + ' ' + @WHERE + ') as QRY group by DATECOL, YEARCOL, ' + @GROUPBY;
end
--insert into tudortest (str, date, sqlexec) values (@SQLTOEXEC4, getdate(),'Transfer in');
end
--PROCESS TRANSFER IN
if @TRANSFERIN = 1
begin
--deal with the reason from clause - add it after the transaction join
if @DIMENSION1 = 15
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.TARGETSPONSORSHIPID inner join dbo.SPONSORSHIPREASON SR on SR.ID = SPT1.SPONSORSHIPREASONID ';
end
else
begin
set @FROM = @FROMCLAUSE + ' inner join dbo.SPONSORSHIPTRANSACTION SPT1 on SP.ID = SPT1.TARGETSPONSORSHIPID ';
end
set @WHERE = @WHERECLAUSE + ' and ACTIONCODE in (1,7,8) ';
set @COLUMN = @COLUMNSELECT + ', ''Transfers in'' as DIMTRANSACTION '
if @GROUPBYCLAUSE is not null
begin
set @GROUPBY = @GROUPBYCLAUSE + ', DIMTRANSACTION';
end
else
begin
set @GROUPBY ='DIMTRANSACTION';
end
-- handle processing of location types
If @LOCATIONCOUNT > 0
begin
exec dbo.USP_REPORT_PROCESSLOCATIONTYPE_DIMENSION
@LOCATIONCOUNT,
@DIMENSION1,
null,
null,
@COLUMN,
@FROM,
@WHERE,
@GROUPBY,
@SQLTOEXEC4 output
end
else
begin
set @SELECT = 'select count(*) CNT, DATECOL, YEARCOL, '+ @GROUPBY;
-- construct the sql query
set @SQLTOEXEC4 = @SELECT + ' from (' + @COLUMN + ' ' + @FROM + ' ' + @WHERE + ') as QRY group by DATECOL, YEARCOL, ' + @GROUPBY;
end
--insert into tudortest (str, date, sqlexec) values (@SQLTOEXEC5, getdate(),'Transfer out');
end
if @SQLTOEXEC1 is not null
begin
set @SQLTOEXEC = @SQLTOEXEC1
end
if @SQLTOEXEC2 is not null
begin
if @SQLTOEXEC <> ''
begin
set @SQLTOEXEC = @SQLTOEXEC + ' union all '+ @SQLTOEXEC2
end
else
begin
set @SQLTOEXEC = @SQLTOEXEC2
end
end
if @SQLTOEXEC3 is not null
begin
if @SQLTOEXEC <> ''
begin
set @SQLTOEXEC = @SQLTOEXEC + ' union all '+ @SQLTOEXEC3
end
else
begin
set @SQLTOEXEC = @SQLTOEXEC3
end
end
if @SQLTOEXEC4 is not null
begin
if @SQLTOEXEC <> ''
begin
set @SQLTOEXEC = @SQLTOEXEC + ' union all '+ @SQLTOEXEC4
end
else
begin
set @SQLTOEXEC = @SQLTOEXEC4
end
end
-- append to the query the code that handles blanc column values
set @RESULTSELECTION =' delete from #DATECOL where DATECOL+YEARCOL in (select DATECOL+YEARCOL from #RESULT) ' +
' insert into #RESULT (DATECOL, YEARCOL, CNT, ' + @DIMENSIONCOLUMNS + ') ' +
' select DATEC , YEARC , 0, ' + @DIMENSIONCOLUMNS +
' from (select #DATECOL.DATECOL as DATEC, #DATECOL.YEARCOL as YEARC, #RESULT.* from #DATECOL cross join #RESULT) as CROSSJOIN ' +
' select CNT, DATECOL, YEARCOL, ' + @DIMENSIONCOLUMNS + ' from #RESULT '
set @SQLTOEXEC = @DATECOLTEMP + ' select * into #RESULT from (' +@SQLTOEXEC + ') as RES ' + @RESULTSELECTION
--insert into tudortest (str, date, sqlexec, stardate, enddate) values (@SQLTOEXEC, getdate(),'AFFILIATE', @STARTDATE, @ENDDATE);
-- execute the query
exec sp_executesql @SQLTOEXEC,
N'@DIMENSION1VALUE nvarchar(255), @STARTDATE datetime, @ENDDATE datetime, @DIMENSION1VALUE3 nvarchar(255), @AFFILIATE nvarchar(255)',
@DIMENSION1VALUE=@DIMENSION1VALUE, @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @DIMENSION1VALUE3=@DIMENSION1VALUE3, @AFFILIATE=@AFFILIATE ;