USP_REPORT_MARKETINGSURVEY
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MARKETINGSURVEYQUESTIONID | uniqueidentifier | IN | |
@MARKETINGSURVEYQUESTIONSELECTIONID | uniqueidentifier | IN | |
@FROMDATE | datetime | IN | |
@TODATE | datetime | IN |
Definition
Copy
create procedure dbo.USP_REPORT_MARKETINGSURVEY
(
@MARKETINGSURVEYQUESTIONID uniqueidentifier = null,
@MARKETINGSURVEYQUESTIONSELECTIONID uniqueidentifier = null,
@FROMDATE datetime,
@TODATE datetime
)
as
set nocount on;
set @FROMDATE = dbo.UFN_DATE_GETEARLIESTTIME(@FROMDATE);
set @TODATE = dbo.UFN_DATE_GETLATESTTIME(@TODATE);
declare @ANSWERSGIVEN bit
select top 1 @ANSWERSGIVEN = 1 --We aren't using this in the report. All result scenarios use a single table in the report. Maintaining for backward compatibility.
from dbo.SALESORDERMARKETINGSURVEYRESPONSE SOMSR
inner join dbo.SALESORDER SO on SOMSR.SALESORDERID = SO.ID
inner join dbo.MARKETINGSURVEYANSWER MSA on SOMSR.MARKETINGSURVEYANSWERID = MSA.ID
where (SO.TRANSACTIONDATE between @FROMDATE and @TODATE);
declare @DECLINED nvarchar(20) = 'Declined'
select
count(1) TOTAL,
MSQ.QUESTIONTEXT QUESTION,
@ANSWERSGIVEN ANSWERSGIVEN,
SURVEY.ANSWER,
( --We aren't using this in the report. Report has since changed to treat declined like any other row. Maintaining for backward compatibility. :(
select
COUNT(a.ID)
from dbo.SALESORDERMARKETINGSURVEYRESPONSE a
inner join dbo.SALESORDER b on a.SALESORDERID = b.ID
where a.MARKETINGSURVEYQUESTIONID = SOMSR.MARKETINGSURVEYQUESTIONID
and NOTCOLLECTED = 1
and b.TRANSACTIONDATE between @FROMDATE and @TODATE
) DECLINED
from dbo.SALESORDER SO
inner join dbo.SALESORDERMARKETINGSURVEYRESPONSE SOMSR on SO.ID = SOMSR.SALESORDERID
inner join dbo.MARKETINGSURVEYQUESTION MSQ on MSQ.ID = SOMSR.MARKETINGSURVEYQUESTIONID
left outer join dbo.MARKETINGSURVEYANSWER MSA
on
MSA.ID = SOMSR.MARKETINGSURVEYANSWERID and
SOMSR.NOTCOLLECTED = 0
outer apply(
select
case
when MSA.ANSWERTEXT is null then @DECLINED
else MSA.ANSWERTEXT
end [ANSWER]
) as [SURVEY]
where
SO.STATUSCODE = 1
and SO.TRANSACTIONDATE between @FROMDATE and @TODATE
and (@MARKETINGSURVEYQUESTIONID is null or MSQ.ID = @MARKETINGSURVEYQUESTIONID)
and (@MARKETINGSURVEYQUESTIONSELECTIONID is null or MSQ.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@MARKETINGSURVEYQUESTIONSELECTIONID)))
group by SOMSR.MARKETINGSURVEYQUESTIONID, MSQ.QUESTIONTEXT, [SURVEY].ANSWER
order by SOMSR.MARKETINGSURVEYQUESTIONID, MSQ.QUESTIONTEXT, case when SURVEY.ANSWER = @DECLINED then 1 end asc
option (recompile);
return 0;