12121212
-- ====================================================================================
-- INITIAL RELEASE: 11/15/2021 AUTHOR: Jeevan Shekar
-- EXEC [CW_SURVEY_SP] 93
-- =====================================================================================
CREATE PROCEDURE [dbo].[CW_SURVEY_SP]
(
@DATASOURCEID INT
)
AS
BEGIN
BEGIN TRANSACTION
BEGIN TRY
--DECLARE @DATASOURCEID INT = 93
DECLARE @LOAD_START_TIME DATETIME, @LAST_MODIFIED_DATE DATETIME, @MAX_LAST_MODIFIED_DATE DATETIME;
SET @LOAD_START_TIME = GETDATE();
SET @LAST_MODIFIED_DATE = (SELECT CONVERT(VARCHAR,CONVERT(DATETIME,CAST('1970-01-01 00:00:00'AS DATETIME)+ (LAST_MODIFIED_DATE/(24 * 60 *60)),100), 120) AS LAST_MODIFIED_DATE
FROM SYN_SourceTables_CW WHERE DATASOURCEID = 93 AND SOURCETABLENAME = 'STG_CW_SURVEY')
--=================TRUNCATING STAGE TABLE==================
TRUNCATE TABLE STG_CW_TASK_SURVEY
--=================LOADING DATA INTO STAGE=================
--DECLARE @LAST_MODIFIED_DATE DATETIME = '2010-01-01 00:00:00', @DATASOURCEID INT = 93;
INSERT INTO STG_CW_TASK_SURVEY
(
[SENT_DATE]
,[COMPLETED]
,[UPDATED_BY]
,[TICKET_NUMBER]
,[TICKETTYPE]
,[SURVEY_USER]
,[SURVEY_TYPE]
,[COMPANY]
,[SURVEYCLASSIFICATION]
,[SCRUBDATE]
,[SURVEYSTARTED]
,[SURVEYINVITATIONDATE]
,[INSTANCEID]
,[Domain_ID]
,[Metric_Type]
)
--DECLARE @LAST_MODIFIED_DATE DATETIME = '2010-01-01 00:00:00', @DATASOURCEID INT = 93;
SELECT
ASMT_ASSESSMENT_INSTANCE.TAKEN_ON AS [SENT_DATE]
,CAST(ASMT_ASSESSMENT_INSTANCE.DV_STATE AS NVARCHAR(40)) AS [STATE]
,ASMT_ASSESSMENT_INSTANCE.SYS_CREATED_BY AS [SURVEY_CREATED]
,rtrim(ltrim(ASMT_ASSESSMENT_INSTANCE.DV_TASK_ID)) AS [TICKET_NUMBER] -- Survey Module Update
,ASMT_ASSESSMENT_INSTANCE.[TRIGGER_TABLE] AS TICKET_TYPE
,ASMT_ASSESSMENT_INSTANCE.[USER] AS SURVEY_USER
,CAST(ASMT_ASSESSMENT_INSTANCE.DV_METRIC_TYPE AS NVARCHAR(MAX)) AS SURVEY_TYPE
,CAST(C.COMPANY AS NVARCHAR(86)) AS COMPANY
,'SERVICE DESK'
,ASMT_ASSESSMENT_INSTANCE.DUE_DATE
,ASMT_ASSESSMENT_INSTANCE.SYS_CREATED_ON
,ASMT_ASSESSMENT_INSTANCE.SYS_CREATED_ON
,ASMT_ASSESSMENT_INSTANCE.NUMBER AS INSTANCEID
,ASMT_ASSESSMENT_INSTANCE.SYS_DOMAIN
,ASMT_ASSESSMENT_INSTANCE.DV_METRIC_TYPE AS DV_METRIC_TYPE
FROM SYN_SN_ST_asmt_assessment_instance ASMT_ASSESSMENT_INSTANCE
LEFT OUTER JOIN SYN_ODS_CW_ITIL_TRANSACTION ITIL ON ITIL.TRANSACTION_ID = CAST(ASMT_ASSESSMENT_INSTANCE.DV_TASK_ID AS NVARCHAR(255)) AND ITIL.DATASOURCEID = @DATASOURCEID
LEFT OUTER JOIN SYN_ODS_CW_COMPANY C ON C.COMPANY_SK = ITIL.COMPANY_SK AND C.DATASOURCEID = @DATASOURCEID
WHERE ASMT_ASSESSMENT_INSTANCE.SYS_UPDATED_ON > @LAST_MODIFIED_DATE AND
ASMT_ASSESSMENT_INSTANCE.DV_TASK_ID IS NOT NULL AND CAST(ASMT_ASSESSMENT_INSTANCE.DV_TASK_ID AS NVARCHAR(255)) <> ''
--where ASMT_ASSESSMENT_INSTANCE.DV_TASK_ID in ('INC4996386','INC4909193')
--DECLARE @DATASOURCEID INT = 93
UPDATE STG
SET STG.QUESTIONSETID = C.QUESTIONSETID
FROM STG_CW_TASK_SURVEY STG
LEFT OUTER JOIN SYN_CW_CSAT_QUESTION_SETS C
ON STG.DOMAIN_ID = C.DOMAIN_ID
AND STG.METRIC_TYPE = C.METRIC_TYPE
AND C.DATASOURCEID = @DATASOURCEID
-- Survey Module Update
--DECLARE @DATASOURCEID INT = 93
UPDATE STG
SET STG.QUESTIONSETID = 1 --select *
FROM STG_CW_TASK_SURVEY STG
WHERE STG.QUESTIONSETID is NULL
--DECLARE @DATASOURCEID INT = 93
UPDATE W
SET SURVEY_USER_PERSON_SK = PERSON.PERSON_SK
FROM STG_CW_TASK_SURVEY W
LEFT OUTER JOIN
(SELECT MAX(PERSON_SK) AS PERSON_SK,PERSON_ID,DATASOURCEID FROM SYN_PERSON WHERE DATASOURCEID = @DATASOURCEID GROUP BY PERSON_ID,DATASOURCEID) PERSON
ON (PERSON.PERSON_ID = W.SURVEY_USER AND PERSON.DATASOURCEID = @DATASOURCEID)
--=================TRUNCATING STAGE TABLE==================
TRUNCATE TABLE STG_CW_TASK_SURVEY_DETAILS
--=================LOADING DATA INTO STAGE=================
--DECLARE @LAST_MODIFIED_DATE DATETIME = '2017-10-01 00:00:00', @DATASOURCEID INT = 93;
INSERT INTO STG_CW_TASK_SURVEY_DETAILS
(
QUESTION
,QUESTION_ID
,RESPONSE
,SURVEY_DATE
,UPDATED
,TASK
,STATE
,COMMENTS
,COMPANY
,DATATYPE
,[ORDER]
,INSTANCEID
)
--DECLARE @LAST_MODIFIED_DATE DATETIME = '2017-10-01 00:00:00', @DATASOURCEID INT = 93;
SELECT
CAST (ASMT.[DV_METRIC] AS NVARCHAR(MAX)) AS QUESTION
,ASMT.[METRIC] AS QUESTION
,ASMT.[ACTUAL_VALUE] AS RESPONSE
,ASMT.[SYS_UPDATED_ON] AS SURVEY_DATE
,ASMT.[SYS_UPDATED_ON] AS UPDATED
,[ASMT_ASSESSMENT_INSTANCE].DV_TASK_ID AS TASK
,CAST(ASMT_ASSESSMENT_INSTANCE.DV_STATE AS NVARCHAR(46)) AS STATE
,CAST(ASMT.STRING_VALUE AS NVARCHAR(4000)) AS COMMENTS
,CAST(C.COMPANY AS NVARCHAR(86)) AS COMPANY
,METRIC.DATATYPE
,COALESCE(METRIC.[ORDER],REVERSE(SUBSTRING(REVERSE(ASMT.ASSIGN_TO_ORDER) ,1,CHARINDEX('-',REVERSE(ASMT.ASSIGN_TO_ORDER))-2)) ) AS [ORDER]
,ASMT_ASSESSMENT_INSTANCE.NUMBER AS INSTANCEID
FROM SYN_SN_ST_ASMT_METRIC METRIC
LEFT OUTER JOIN SYN_SN_ST_asmt_assessment_instance [ASMT_ASSESSMENT_INSTANCE]
ON [ASMT_ASSESSMENT_INSTANCE].Metric_Type = METRIC.Metric_Type
LEFT OUTER JOIN SYN_SN_ST_asmt_metric_result ASMT ON ASMT.INSTANCE=ASMT_ASSESSMENT_INSTANCE.SYS_ID AND ASMT.METRIC = METRIC.SYS_ID
LEFT OUTER JOIN SYN_ODS_CW_ITIL_TRANSACTION ITIL ON ITIL.TRANSACTION_ID = CAST([ASMT_ASSESSMENT_INSTANCE].DV_TASK_ID AS NVARCHAR(255)) AND ITIL.DATASOURCEID = @DATASOURCEID
LEFT OUTER JOIN SYN_ODS_CW_COMPANY C ON C.COMPANY_SK = ITIL.COMPANY_SK AND C.DATASOURCEID = @DATASOURCEID
WHERE ISNULL(ASMT.[SYS_UPDATED_ON],GETDATE()) > @LAST_MODIFIED_DATE AND
[ASMT_ASSESSMENT_INSTANCE].DV_TASK_ID IS NOT NULL AND CAST([ASMT_ASSESSMENT_INSTANCE].DV_TASK_ID AS NVARCHAR(255)) <> ''
and ASMT.[SYS_UPDATED_ON] IS NOT NULL
--and [ASMT_ASSESSMENT_INSTANCE].DV_TASK_ID = 'INC0278167'
--where ASMT_ASSESSMENT_INSTANCE.DV_TASK_ID in ('INC4996386','INC4909193')
DELETE FROM STG_CW_TASK_SURVEY_DETAILS
WHERE QUESTION = 'NEW SCALE'
AND COMPANY ='AUTONATION'
--======================Updating Response = Null for multiple choice Questions=============
UPDATE K
SET RESPONSE = NULL
FROM STG_CW_TASK_SURVEY_DETAILS K
WHERE DATATYPE = 'multiplecheckbox'
---------====================LOADING INTO ODS_CW=====================----------------------
----DECLARE @DATASOURCEID INT = 93
;WITH SURVEY_SENT
AS
(
SELECT
SURVEY_SENT_STAGING.[SENT_DATE]
,SURVEY_SENT_STAGING.[COMPLETED]
,SURVEY_SENT_STAGING.[UPDATED_BY]
,SURVEY_SENT_STAGING.[TICKET_NUMBER]
,SURVEY_SENT_STAGING.[TICKETTYPE]
,SURVEY_SENT_STAGING.[SURVEY_USER_PERSON_SK]
,SURVEY_SENT_STAGING.[SURVEY_TYPE]
,COALESCE(SURVEY_SENT_STAGING.[COMPANY],'') AS [COMPANY]
,SURVEY_SENT_STAGING.[SURVEYCLASSIFICATION]
,SURVEY_SENT_STAGING.[SURVEYINVITATIONDATE]
,SURVEY_SENT_STAGING.[SURVEYSTARTED]
,SURVEY_SENT_STAGING.[SCRUBDATE]
,SURVEY_SENT_STAGING.[INSTANCEID]
,SURVEY_SENT_STAGING.[QuestionSetID]
,GETDATE() AS DATELOADED
,0 AS SURVEYMETHOD
,@DATASOURCEID AS DATASOURCEID
FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY TICKET_NUMBER,INSTANCEID ORDER BY SENT_DATE DESC) AS RN
FROM STG_CW_TASK_SURVEY SURVEY_SENT_STAGING) SURVEY_SENT_STAGING WHERE
RN = 1)
INSERT INTO SYN_CW_CSAT_DATA
(
[TICKETNUMBER],
[ATTEMPTED],
[COMPLETED],
[TICKETTYPE],
[TICKET_OWNER] ,
[SURVEYORCOMMENT],
[SURVEYINVITATIONDATE],
[SURVEYSTARTED],
[DATELOADED],
[CANDIDATEID],
[COMPANY],
[SURVEYCLASSIFICATION],
[CANDIDATESTATUSDESC],
[SURVEYMETHOD],
DATASOURCEID,
SCRUBDATE,
[INSTANCEID],
[QuestionSetID]
)
--DECLARE @DATASOURCEID INT = 93
SELECT
SS.TICKET_NUMBER,
ATTEMPTED = CASE WHEN (SS.COMPLETED='COMPLETE' OR SS.COMPLETED='REQUESTED') THEN 'YES' ELSE 'NO' END ,
COMPLETED = CASE WHEN (SS.COMPLETED='COMPLETE') THEN 'YES' ELSE 'NO' END,
TICKETTYPE = CASE WHEN LEFT(SS.TICKET_NUMBER,3) ='RIT' THEN 'REQUESTED ITEM' WHEN LEFT(SS.TICKET_NUMBER,3) ='REQ' THEN 'SERVICE REQUEST' WHEN LEFT(SS.TICKET_NUMBER,3) ='CHG' THEN 'CHANGE REQUEST' WHEN LEFT(SS.TICKET_NUMBER,2) ='WO' THEN 'WORKORDER' ELSE
'INCIDENT'END, -- Survey Module Update
SS.[SURVEY_USER_PERSON_SK],
SS.[SURVEY_TYPE],
SS.[SURVEYINVITATIONDATE],
SS.[SURVEYSTARTED],
GETDATE() AS DATELOADED,
'0' AS CANDIDATE_ID,
LEFT(SS.COMPANY,50) AS COMPANY,
SS.SURVEYCLASSIFICATION AS SURVEYCLASSIFICATION,
'N/A' AS CANDIDATESTATUSDESC,
0 AS SURVEYMETHOD,
@DATASOURCEID AS DATASOURCEID,
SS.SCRUBDATE,
SS.[INSTANCEID],
SS.[QuestionSetID]
FROM SURVEY_SENT SS
LEFT OUTER JOIN SYN_CW_CSAT_DATA CD ON SS.TICKET_NUMBER=CD.TICKETNUMBER AND CD.INSTANCEID = SS.INSTANCEID
AND CD.DATASOURCEID = @DATASOURCEID
WHERE CD.TICKETNUMBER IS NULL;
----------======= UPDATING RESPONSES AS NULL FOR INVALID RESPONSES ========----------------
UPDATE STG_CW_TASK_SURVEY_DETAILS
SET RESPONSE=NULL
WHERE RESPONSE='-1.00'
update STG_CW_TASK_SURVEY_DETAILS Set [order] = convert(varchar(3),[order])+'00'
where LEN([Order]) <3
-----------------======================= UPDATING TASK SURVEY DETAILS ===================------------------------
--DECLARE @DATASOURCEID INT=93
;WITH UPDATE_CTE AS
(
SELECT
QUESTIONS.TASK AS TICKET_NUMBER,
QUESTIONS.INSTANCEID AS INSTANCEID,
QUESTIONS.UPDATED AS UPDATED,
QUESTIONS.QUESTION1,
QUESTIONS.QUESTION2,
QUESTIONS.QUESTION3,
QUESTIONS.QUESTION4,
QUESTIONS.QUESTION5,
QUESTIONS.QUESTION6,
QUESTIONS.QUESTION7,
QUESTIONS.QUESTION8,
QUESTIONS.QUESTION9,
QUESTIONS.QUESTION10,
QUESTIONS.QUESTION11,
COMMENTS.COMMENTS1 AS Q1TEXT,
COMMENTS.COMMENTS2 AS Q2TEXT,
COMMENTS.COMMENTS3 AS Q3TEXT,
COMMENTS.COMMENTS4 AS Q4TEXT,
COMMENTS.COMMENTS5 AS Q5TEXT,
COMMENTS.COMMENTS6 AS Q6TEXT,
COMMENTS.COMMENTS7 AS Q7TEXT,
COMMENTS.COMMENTS8 AS Q8TEXT,
COMMENTS.COMMENTS9 AS Q9TEXT,
COMMENTS.COMMENTS10 AS Q10TEXT,
COMMENTS.COMMENTS11 AS Q11TEXT,
COMMENTS.COMMENTS12 AS Q12TEXT,
COMMENTS.COMMENTS13 AS Q13TEXT,
COMMENTS.COMMENTS14 AS Q14TEXT,
COMMENTS.COMMENTS15 AS Q15TEXT,
COMMENTS.COMMENTS16 AS Q16TEXT,
COMMENTS.COMMENTS17 AS Q17TEXT,
COMMENTS.COMMENTS18 AS Q18TEXT,
COMMENTS.COMMENTS19 AS Q19TEXT,
COMMENTS.COMMENTS20 AS Q20TEXT,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE1)=1 THEN RESPONSES.RESPONSE1 ELSE NULL END AS Q1SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE2)=1 THEN RESPONSES.RESPONSE2 ELSE NULL END AS Q2SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE3)=1 THEN RESPONSES.RESPONSE3 ELSE NULL END AS Q3SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE4)=1 THEN RESPONSES.RESPONSE4 ELSE NULL END AS Q4SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE5)=1 THEN RESPONSES.RESPONSE5 ELSE NULL END AS Q5SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE6)=1 THEN RESPONSES.RESPONSE6 ELSE NULL END AS Q6SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE7)=1 THEN RESPONSES.RESPONSE7 ELSE NULL END AS Q7SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE8)=1 THEN RESPONSES.RESPONSE8 ELSE NULL END AS Q8SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE9)=1 THEN RESPONSES.RESPONSE9 ELSE NULL END AS Q9SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE10)=1 THEN RESPONSES.RESPONSE10 ELSE NULL END AS Q10SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE11)=1 THEN RESPONSES.RESPONSE11 ELSE NULL END AS Q11SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE12)=1 THEN RESPONSES.RESPONSE12 ELSE NULL END AS Q12SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE13)=1 THEN RESPONSES.RESPONSE13 ELSE NULL END AS Q13SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE14)=1 THEN RESPONSES.RESPONSE14 ELSE NULL END AS Q14SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE15)=1 THEN RESPONSES.RESPONSE15 ELSE NULL END AS Q15SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE16)=1 THEN RESPONSES.RESPONSE16 ELSE NULL END AS Q16SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE17)=1 THEN RESPONSES.RESPONSE17 ELSE NULL END AS Q17SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE18)=1 THEN RESPONSES.RESPONSE18 ELSE NULL END AS Q18SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE19)=1 THEN RESPONSES.RESPONSE19 ELSE NULL END AS Q19SCORE,
CASE WHEN ISNUMERIC(RESPONSES.RESPONSE20)=1 THEN RESPONSES.RESPONSE20 ELSE NULL END AS Q20SCORE
FROM
(
SELECT
TASK,
INSTANCEID,
UPDATED,
"QUESTION1",
"QUESTION2",
"QUESTION3",
"QUESTION4",
"QUESTION5",
"QUESTION6",
"QUESTION7",
"QUESTION8",
"QUESTION9",
"QUESTION10",
"QUESTION11"
FROM
(
SELECT
'QUESTION'+CASE WHEN LEN([ORDER]) >= 3 THEN CONVERT(VARCHAR, LEFT([ORDER],LEN([ORDER])-2)) ELSE CAST([ORDER] AS VARCHAR) END AS QUESTIONCOLUMN,
--'QUESTION'+CONVERT(VARCHAR, ROW_NUMBER() OVER(PARTITION BY TASK,INSTANCEID ORDER BY [ORDER])) AS QUESTIONCOLUMN,
TASK,INSTANCEID, QUESTION, UPDATED,COMPANY
FROM(
SELECT DISTINCT TASK,INSTANCEID, [ORDER], CONVERT(VARCHAR(10),UPDATED,120) AS UPDATED, COMPANY, Question
--QUESTION =
-- (STUFF
-- (
-- (SELECT ' '+ QUESTION +' | '
-- FROM [ODS_STG_CW].[DBO].[STG_GSN_TASK_SURVEY_DETAILS] t1
-- WHERE t1.TASK = t2.TASK
-- AND t1.[ORDER] = t2.[ORDER]
-- ORDER BY SURVEY_DATE
-- FOR XML PATH (''))
-- , 1, 1, ''
-- )
-- )select *
FROM STG_CW_TASK_SURVEY_DETAILS t2
--where t2.Task = 'INC0278167'
GROUP BY TASK,INSTANCEID, [ORDER], CONVERT(VARCHAR(10),UPDATED,120), COMPANY, Question
) ROWNU
) QUESTIONSET
PIVOT
(
MAX(QUESTION) FOR QUESTIONCOLUMN IN ("QUESTION1", "QUESTION2", "QUESTION3", "QUESTION4", "QUESTION5","QUESTION6","QUESTION7","QUESTION8","QUESTION9","QUESTION10","QUESTION11")
) B
WHERE UPDATED IS NOT NULL
) QUESTIONS
--------------------------===================(CRQGB0000604681) COMMENTS Q1TEXT TO Q7TEXT ======================-----------------------
INNER JOIN
(
SELECT
TASK,
UPDATED,
INSTANCEID,
"COMMENTS1",
"COMMENTS2",
"COMMENTS3",
"COMMENTS4",
"COMMENTS5",
"COMMENTS6",
"COMMENTS7",
"COMMENTS8",
"COMMENTS9",
"COMMENTS10",
"COMMENTS11",
"COMMENTS12",
"COMMENTS13",
"COMMENTS14",
"COMMENTS15",
"COMMENTS16",
"COMMENTS17",
"COMMENTS18",
"COMMENTS19",
"COMMENTS20"
FROM
(
SELECT
--CONVERT(VARCHAR, ROW_NUMBER() OVER(PARTITION BY TASK ORDER BY [ORDER])),
--'COMMENTS'+CONVERT(VARCHAR, ROW_NUMBER() OVER(PARTITION BY TASK,INSTANCEID ORDER BY [ORDER])) AS COMMENTSCOLUMN,
'COMMENTS'+CASE WHEN LEN([ORDER]) >= 3 THEN CONVERT(VARCHAR, LEFT([ORDER],LEN([ORDER])-2)) ELSE CAST([ORDER] AS VARCHAR) END AS COMMENTSCOLUMN,
TASK,
INSTANCEID,
COMMENTS,
UPDATED,
COMPANY
FROM
(
SELECT * FROM
(
SELECT DISTINCT TASK,INSTANCEID, [ORDER], CONVERT(VARCHAR(10),UPDATED,120) AS UPDATED, COMPANY,
COMMENTS = CASE WHEN DATATYPE = 'multiplecheckbox' THEN
(STUFF
(
(SELECT ' ' + COMMENTS + ' ||'
FROM [STG_CW_TASK_SURVEY_DETAILS] t1
WHERE t1.TASK = t2.TASK
AND t1.[ORDER] = t2.[ORDER]
ORDER BY SURVEY_DATE
FOR XML PATH (''))
, 1, 1, ''
)
)
ELSE COMMENTS END
FROM STG_CW_TASK_SURVEY_DETAILS t2
--where t2.task = 'INC0278167'
GROUP BY TASK,INSTANCEID, [ORDER], CONVERT(VARCHAR(10),UPDATED,120), COMPANY,DATATYPE,COMMENTS
)DD
) ROWNU
) COMMENTSSET
PIVOT
(
MAX(COMMENTS) FOR COMMENTSCOLUMN IN ("COMMENTS1", "COMMENTS2","COMMENTS3","COMMENTS4","COMMENTS5","COMMENTS6","COMMENTS7","COMMENTS8", "COMMENTS9","COMMENTS10","COMMENTS11","COMMENTS12","COMMENTS13","COMMENTS14","COMMENTS15","COMMENTS16","COMMENTS17",
"COMMENTS18","COMMENTS19","COMMENTS20")
) B
WHERE UPDATED IS NOT NULL
) COMMENTS
ON ISNULL(QUESTIONS.TASK,'')=ISNULL(COMMENTS.TASK, '') AND ISNULL(QUESTIONS.INSTANCEID,'')=ISNULL(COMMENTS.INSTANCEID, '')
AND ISNULL(QUESTIONS.UPDATED,'')=ISNULL(COMMENTS.UPDATED,'')
---------========================= UPDATING RESPONSES ================--------------------------
INNER JOIN
(
SELECT
TASK,
INSTANCEID,
"RESPONSE1",
"RESPONSE2",
"RESPONSE3",
"RESPONSE4",
"RESPONSE5",
"RESPONSE6",
"RESPONSE7",
"RESPONSE8",
"RESPONSE9",
"RESPONSE10",
"RESPONSE11",
"RESPONSE12",
"RESPONSE13",
"RESPONSE14",
"RESPONSE15",
"RESPONSE16",
"RESPONSE17",
"RESPONSE18",
"RESPONSE19",
"RESPONSE20"
FROM
(
SELECT
--'RESPONSE'+CONVERT(VARCHAR, ROW_NUMBER() OVER(PARTITION BY TASK,INSTANCEID ORDER BY [ORDER])) AS RESPONSECOLUMN,
'RESPONSE'+CASE WHEN LEN([ORDER]) >= 3 THEN CONVERT(VARCHAR, LEFT([ORDER],LEN([ORDER])-2)) ELSE CAST([ORDER] AS VARCHAR) END AS RESPONSECOLUMN,
TASK,INSTANCEID, RESPONSE ,COMPANY
FROM
(
SELECT DISTINCT TASK,INSTANCEID, RESPONSE, [ORDER], COMPANY
FROM STG_CW_TASK_SURVEY_DETAILS
--WHERE TASK = 'INC0278167'
) ROWNU
) RESPONSESET
PIVOT
(
MAX(RESPONSE) FOR RESPONSECOLUMN IN ("RESPONSE1", "RESPONSE2", "RESPONSE3", "RESPONSE4", "RESPONSE5","RESPONSE6","RESPONSE7", "RESPONSE8", "RESPONSE9", "RESPONSE10", "RESPONSE11","RESPONSE12", "RESPONSE13", "RESPONSE14","RESPONSE15","RESPONSE1
6","RESPONSE17", "RESPONSE18", "RESPONSE19","RESPONSE20")
) B
) RESPONSES
ON ISNULL(QUESTIONS.TASK, '')=ISNULL(RESPONSES.TASK, '') AND ISNULL(QUESTIONS.INSTANCEID,'')=ISNULL(RESPONSES.INSTANCEID, '')
)
--SELECT * FROM UPDATE_CTE
--WHERE TICKET_NUMBER = 'INC0155901' ;
--==============================================================================
--UPDATE
-- ODS_CW.[DBO].CSAT_DATA
--SET
-- QUESTION1=UC.QUESTION1,
-- QUESTION2=UC.QUESTION2,
-- QUESTION3=UC.QUESTION3,
-- QUESTION4=UC.QUESTION4,
-- QUESTION5=UC.QUESTION5,
-- QUESTION6=UC.QUESTION6,
-- QUESTION7=UC.QUESTION7,
-- QUESTION8=UC.QUESTION8,
-- QUESTION9=UC.QUESTION9,
-- QUESTION10=UC.QUESTION10,
-- QUESTION11=UC.QUESTION11,
-- Q1TEXT=NULLIF(UC.Q1TEXT,''),
-- Q2TEXT=NULLIF(UC.Q2TEXT,''),
-- Q3TEXT=NULLIF(UC.Q3TEXT,''),
-- Q4TEXT=NULLIF(UC.Q4TEXT,''),
-- Q5TEXT=NULLIF(UC.Q5TEXT,''),
-- Q6TEXT=NULLIF(UC.Q6TEXT,''),
-- Q7TEXT=NULLIF(UC.Q7TEXT,''),
-- Q8TEXT=NULLIF(UC.Q8TEXT,''),
-- Q9TEXT=NULLIF(UC.Q9TEXT,''),
-- Q10TEXT=NULLIF(UC.Q10TEXT,''),
-- Q11TEXT=NULLIF(UC.Q11TEXT,''),
-- Q12TEXT=NULLIF(UC.Q12TEXT,''),
-- Q13TEXT=NULLIF(UC.Q13TEXT,''),
-- Q14TEXT=NULLIF(UC.Q14TEXT,''),
-- Q15TEXT=NULLIF(UC.Q15TEXT,''),
-- Q16TEXT=NULLIF(UC.Q16TEXT,''),
-- Q17TEXT=NULLIF(UC.Q17TEXT,''),
-- Q18TEXT=NULLIF(UC.Q18TEXT,''),
-- Q19TEXT=NULLIF(UC.Q19TEXT,''),
-- Q20TEXT=NULLIF(UC.Q20TEXT,''),
-- Q1SCORE=(SUBSTRING(UC.Q1SCORE,0,CHARINDEX('.',UC.Q1SCORE))),
-- Q2SCORE=(SUBSTRING(UC.Q2SCORE,0,CHARINDEX('.',UC.Q2SCORE))),
-- Q3SCORE=(SUBSTRING(UC.Q3SCORE,0,CHARINDEX('.',UC.Q3SCORE))),
-- Q4SCORE=(SUBSTRING(UC.Q4SCORE,0,CHARINDEX('.',UC.Q4SCORE))),
-- Q5SCORE=(SUBSTRING(UC.Q5SCORE,0,CHARINDEX('.',UC.Q5SCORE))),
-- Q6SCORE=(SUBSTRING(UC.Q6SCORE,0,CHARINDEX('.',UC.Q6SCORE))),
-- Q7SCORE=(SUBSTRING(UC.Q7SCORE,0,CHARINDEX('.',UC.Q7SCORE))),
-- Q8SCORE=(SUBSTRING(UC.Q8SCORE,0,CHARINDEX('.',UC.Q8SCORE))),
-- Q9SCORE=(SUBSTRING(UC.Q9SCORE,0,CHARINDEX('.',UC.Q9SCORE))),
-- Q10SCORE=(SUBSTRING(UC.Q10SCORE,0,CHARINDEX('.',UC.Q10SCORE))),
-- Q11SCORE=(SUBSTRING(UC.Q11SCORE,0,CHARINDEX('.',UC.Q11SCORE))),
-- Q12SCORE=(SUBSTRING(UC.Q12SCORE,0,CHARINDEX('.',UC.Q12SCORE))),
-- Q13SCORE=(SUBSTRING(UC.Q13SCORE,0,CHARINDEX('.',UC.Q13SCORE))),
-- Q14SCORE=(SUBSTRING(UC.Q14SCORE,0,CHARINDEX('.',UC.Q14SCORE))),
-- Q15SCORE=(SUBSTRING(UC.Q15SCORE,0,CHARINDEX('.',UC.Q15SCORE))),
-- Q16SCORE=(SUBSTRING(UC.Q16SCORE,0,CHARINDEX('.',UC.Q16SCORE))),
-- Q17SCORE=(SUBSTRING(UC.Q17SCORE,0,CHARINDEX('.',UC.Q17SCORE))),
-- Q18SCORE=(SUBSTRING(UC.Q18SCORE,0,CHARINDEX('.',UC.Q18SCORE))),
-- Q19SCORE=(SUBSTRING(UC.Q19SCORE,0,CHARINDEX('.',UC.Q19SCORE))),
-- Q20SCORE=(SUBSTRING(UC.Q20SCORE,0,CHARINDEX('.',UC.Q20SCORE))),
-- COMPLETED='YES'
--FROM
-- UPDATE_CTE UC
--WHERE
-- TICKETNUMBER=UC.TICKET_NUMBER AND CSAT_DATA.INSTANCEID = UC.INSTANCEID AND DATASOURCEID = @DATASOURCEID
-- AND CSAT_DATA.INSTANCEID NOT IN (SELECT INSTANCEID FROM [ODS_STG_CW].[DBO].[STG_GSN_TASK_SURVEY] SURVEY_SENT_STAGING
-- WHERE --COMPANY NOT IN ('AUTONATION') AND
-- COMPLETED='REQUESTED')
--===========================================================================
UPDATE ODS
SET
QUESTION1=UC.QUESTION1,
QUESTION2=UC.QUESTION2,
QUESTION3=UC.QUESTION3,
QUESTION4=UC.QUESTION4,
QUESTION5=UC.QUESTION5,
QUESTION6=UC.QUESTION6,
QUESTION7=UC.QUESTION7,
QUESTION8=UC.QUESTION8,
QUESTION9=UC.QUESTION9,
QUESTION10=UC.QUESTION10,
QUESTION11=UC.QUESTION11,
Q1TEXT=NULLIF(UC.Q1TEXT,''),
Q2TEXT=NULLIF(UC.Q2TEXT,''),
Q3TEXT=NULLIF(UC.Q3TEXT,''),
Q4TEXT=NULLIF(UC.Q4TEXT,''),
Q5TEXT=NULLIF(UC.Q5TEXT,''),
Q6TEXT=NULLIF(UC.Q6TEXT,''),
Q7TEXT=NULLIF(UC.Q7TEXT,''),
Q8TEXT=NULLIF(UC.Q8TEXT,''),
Q9TEXT=NULLIF(UC.Q9TEXT,''),
Q10TEXT=NULLIF(UC.Q10TEXT,''),
Q11TEXT=NULLIF(UC.Q11TEXT,''),
Q12TEXT=NULLIF(UC.Q12TEXT,''),
Q13TEXT=NULLIF(UC.Q13TEXT,''),
Q14TEXT=NULLIF(UC.Q14TEXT,''),
Q15TEXT=NULLIF(UC.Q15TEXT,''),
Q16TEXT=NULLIF(UC.Q16TEXT,''),
Q17TEXT=NULLIF(UC.Q17TEXT,''),
Q18TEXT=NULLIF(UC.Q18TEXT,''),
Q19TEXT=NULLIF(UC.Q19TEXT,''),
Q20TEXT=NULLIF(UC.Q20TEXT,''),
Q1SCORE=(SUBSTRING(UC.Q1SCORE,0,CHARINDEX('.',UC.Q1SCORE))),
Q2SCORE=(SUBSTRING(UC.Q2SCORE,0,CHARINDEX('.',UC.Q2SCORE))),
Q3SCORE=(SUBSTRING(UC.Q3SCORE,0,CHARINDEX('.',UC.Q3SCORE))),
Q4SCORE=(SUBSTRING(UC.Q4SCORE,0,CHARINDEX('.',UC.Q4SCORE))),
Q5SCORE=(SUBSTRING(UC.Q5SCORE,0,CHARINDEX('.',UC.Q5SCORE))),
Q6SCORE=(SUBSTRING(UC.Q6SCORE,0,CHARINDEX('.',UC.Q6SCORE))),
Q7SCORE=(SUBSTRING(UC.Q7SCORE,0,CHARINDEX('.',UC.Q7SCORE))),
Q8SCORE=(SUBSTRING(UC.Q8SCORE,0,CHARINDEX('.',UC.Q8SCORE))),
Q9SCORE=(SUBSTRING(UC.Q9SCORE,0,CHARINDEX('.',UC.Q9SCORE))),
Q10SCORE=(SUBSTRING(UC.Q10SCORE,0,CHARINDEX('.',UC.Q10SCORE))),
Q11SCORE=(SUBSTRING(UC.Q11SCORE,0,CHARINDEX('.',UC.Q11SCORE))),
Q12SCORE=(SUBSTRING(UC.Q12SCORE,0,CHARINDEX('.',UC.Q12SCORE))),
Q13SCORE=(SUBSTRING(UC.Q13SCORE,0,CHARINDEX('.',UC.Q13SCORE))),
Q14SCORE=(SUBSTRING(UC.Q14SCORE,0,CHARINDEX('.',UC.Q14SCORE))),
Q15SCORE=(SUBSTRING(UC.Q15SCORE,0,CHARINDEX('.',UC.Q15SCORE))),
Q16SCORE=(SUBSTRING(UC.Q16SCORE,0,CHARINDEX('.',UC.Q16SCORE))),
Q17SCORE=(SUBSTRING(UC.Q17SCORE,0,CHARINDEX('.',UC.Q17SCORE))),
Q18SCORE=(SUBSTRING(UC.Q18SCORE,0,CHARINDEX('.',UC.Q18SCORE))),
Q19SCORE=(SUBSTRING(UC.Q19SCORE,0,CHARINDEX('.',UC.Q19SCORE))),
Q20SCORE=(SUBSTRING(UC.Q20SCORE,0,CHARINDEX('.',UC.Q20SCORE))),
DATELOADED = GetDate(), -- Survey Module Update
COMPLETED='YES'
FROM SYN_CW_CSAT_DATA ODS
INNER JOIN UPDATE_CTE UC ON ODS.TICKETNUMBER=UC.TICKET_NUMBER AND ODS.INSTANCEID = UC.INSTANCEID
AND ODS.DATASOURCEID = @DATASOURCEID
--======= UPDATED V0.3 ===========
--DECLARE @DATASOURCEID INT=93
UPDATE
SYN_CW_CSAT_DATA
SET
DATEUPDATED=UPDATED,
SURVEYCOMPLETED=UPDATED
FROM
(SELECT TASK, MAX(UPDATED) AS UPDATED,INSTANCEID FROM STG_CW_TASK_SURVEY_DETAILS GROUP BY TASK,INSTANCEID) UC
WHERE
TICKETNUMBER=UC.TASK AND DATASOURCEID = @DATASOURCEID
AND SYN_CW_CSAT_DATA.INSTANCEID = UC.INSTANCEID
--AND COMPANY IN ('AUTONATION','VOTORANTIM CEMENT NORTH AMERICA')
--DECLARE @DATASOURCEID INT=93
--UPDATE
-- ODS
--SET
-- ODS_CW.AVERAGESCORE = DD.AVERAGE
--FROM
-- ODS_CW.DBO.CSAT_DATA ODS
-- INNER JOIN
-- (SELECT
-- ROUND(CAST((ISNULL(Q3SCORE,0)+ISNULL(Q4SCORE,0)+ISNULL(Q5SCORE,0)+ISNULL(Q6SCORE,0)+ISNULL(Q7SCORE,0)+ISNULL(Q8SCORE,0)) AS FLOAT)/ 12 , 3)*5 AS AVERAGE ,
-- TICKETNUMBER,INSTANCEID FROM ODS_CW.DBO.CSAT_DATA WHERE DATASOURCEID = @DATASOURCEID
-- )DD
--ON DD.TICKETNUMBER = ODS_CW.TICKETNUMBER
--WHERE DATASOURCEID = @DATASOURCEID
--AND COMPANY ='AUTONATION'
/*
--DECLARE @DATASOURCEID INT=93
UPDATE ODS
SET AVERAGESCORE = ROUND(CAST((ISNULL(Q3SCORE,0)+ISNULL(Q4SCORE,0)+ISNULL(Q5SCORE,0)+ISNULL(Q6SCORE,0)+ISNULL(Q7SCORE,0)+ISNULL(Q8SCORE,0)) AS FLOAT)/ 12 , 3)*5
FROM ODS_CW.DBO.CSAT_DATA ODS
Inner Join [ODS_STG_CW].[DBO].[STG_GSN_TASK_SURVEY_DETAILS] SD
ON ODS_CW.TICKETNUMBER = SD.TASK AND ODS_CW.INSTANCEID = SD.INSTANCEID AND ODS_CW.DATASOURCEID = @DATASOURCEID
WHERE ODS_CW.DATASOURCEID = @DATASOURCEID
AND ODS_CW.COMPANY ='AUTONATION'
*/
--DECLARE @DATASOURCEID INT=93
--UPDATE
-- ODS
--SET
-- ODS_CW.AVERAGESCORE = DD.AVERAGE
--FROM
-- ODS_CW.DBO.CSAT_DATA ODS
-- INNER JOIN
-- (SELECT
-- ROUND(CAST((ISNULL(Q1SCORE,0)+ISNULL(Q2SCORE,0)+ISNULL(Q3SCORE,0)+ISNULL(Q4SCORE,0)+ISNULL(Q5SCORE,0)+ISNULL(Q6SCORE,0)) AS FLOAT)/
-- NULLIF((
-- CASE WHEN Q1SCORE IS NOT NULL AND Q1SCORE<> 0 THEN 1 ELSE 0 END + CASE WHEN Q2SCORE IS NOT NULL AND Q2SCORE<> 0 THEN 1 ELSE 0 END +
-- CASE WHEN Q3SCORE IS NOT NULL AND Q3SCORE<> 0 THEN 1 ELSE 0 END + CASE WHEN Q4SCORE IS NOT NULL AND Q4SCORE<> 0 THEN 1 ELSE 0 END +
-- CASE WHEN Q5SCORE IS NOT NULL AND Q5SCORE<> 0 THEN 1 ELSE 0 END + CASE WHEN Q6SCORE IS NOT NULL AND Q6SCORE<> 0 THEN 1 ELSE 0 END ),0),3) AS AVERAGE,TICKETNUMBER
-- FROM ODS_CW.DBO.CSAT_DATA WHERE DATASOURCEID = @DATASOURCEID
-- )DD
--ON DD.TICKETNUMBER = ODS_CW.TICKETNUMBER
--WHERE DATASOURCEID = @DATASOURCEID
--AND COMPANY NOT IN ('AUTONATION')
--=================UPDATING SOURCE_TABLES INFO=================
--DECLARE @DATASOURCEID INT =93
--DECLARE @MAX_LAST_MODIFIED_DATE DATETIME;
UPDATE ODS
SET AVERAGESCORE = ROUND(CAST((ISNULL(Q3SCORE,0)+ISNULL(Q4SCORE,0)+ISNULL(Q5SCORE,0)+ISNULL(Q6SCORE,0)+ISNULL(Q7SCORE,0)+ISNULL(Q8SCORE,0)) AS FLOAT)/ 6 , 3)
FROM SYN_CW_CSAT_DATA ODS
Inner Join STG_CW_TASK_SURVEY_DETAILS SD
ON ODS.TICKETNUMBER = SD.TASK AND ODS.INSTANCEID = SD.INSTANCEID AND ODS.DATASOURCEID = @DATASOURCEID
WHERE ODS.DATASOURCEID = @DATASOURCEID
--AND ODS_CW.COMPANY ='AUTONATION'
--declare @MAX_LAST_MODIFIED_DATE datetime
;WITH CTE AS
(SELECT
row_number() over(partition by sys_domain order by UPDATED desc ) as rn,sys_domain,
CONVERT(VARCHAR, UPDATED, 120) AS LAST_MODIFIED_DATE
FROM STG_CW_TASK_SURVEY_DETAILS
)
--SELECT @MAX_LAST_MODIFIED_DATE=
-- MIN(LAST_MODIFIED_DATE)
--FROM CTE
-- WHERE rn=1
select @MAX_LAST_MODIFIED_DATE= (select case when MIN(LAST_MODIFIED_DATE) is null then (select max(dateupdated) as last_modified_date from SYN_CW_CSAT_DATA) else MIN(LAST_MODIFIED_DATE) end )
FROM CTE WHERE rn=1
UPDATE SYN_SourceTables_CW
SET LAST_MODIFIED_DATE=DATEDIFF(SECOND, '1970-01-01 00:00:00',@MAX_LAST_MODIFIED_DATE),
LOADSTARTTIME=@LOAD_START_TIME,
LOADENDTIME=GETDATE()
WHERE DATASOURCEID=@DATASOURCEID
AND PACKAGE_NAME='STG_CW_SURVEY'
AND SOURCETABLENAME='STG_CW_SURVEY'
SELECT '0' AS RETURNCODE
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ERRORNUMBER
,ERROR_SEVERITY() AS ERRORSEVERITY
,ERROR_STATE() AS ERRORSTATE
,ERROR_PROCEDURE() AS ERRORPROCEDURE
,ERROR_LINE() AS ERRORLINE
,ERROR_MESSAGE() AS ERRORMESSAGE
,'1' AS RETURNCODE;
IF (@@TRANCOUNT > 0)
ROLLBACK TRANSACTION
END CATCH;
END;
Comments
Post a Comment