• The current stored procedure below which I just duplicate when I have a new client (by just changing the ID number).

    I tried to add my other stored procedure but get the error column does not exist. Looking at the data it would be better in a new table any way and the same for another stored procedure I have. The end goal would be to have three stored procedures which populates the tables (a table for each clients_id) summary, questions and kpi's. At present I have 30 tables setup for the summary below (I should have 30 tables for questions and another 30 tables for KPI's).

    As you no doubt can tell I'm very new to this, I also did not setup the sql database which makes it harder I think.

    I like the setup below as I have duplicated it for many clients now.

    Because I can't determine when clients want to access their data putting it into a table at a certain time works I think?

    USE [MMAUDIT]

    GO

    /****** Object: StoredProcedure [dbo].[MMA_GEN_AUDITSUMMARY_STG] Script Date: 10/19/2014 8:55:02 AM ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    ALTER PROCEDURE [dbo].[MMA_GEN_AUDITSUMMARY_STG] AS

    BEGIN

    DECLARE @cols AS NVARCHAR(MAX),@cols1 AS NVARCHAR(MAX),

    @query AS NVARCHAR(MAX)

    -- Client_ID=19 --

    Print '19-'

    select @cols = STUFF((SELECT ',' + QUOTENAME(section_name)

    from MMA_SECTION_MST WHERE CLIENT_ID=19 AND IN_USE=1

    --group by section_name

    --order by section_name

    FOR XML PATH(''), TYPE

    ).value('.', 'NVARCHAR(MAX)')

    ,1,1,'')

    select @cols1 = STUFF((SELECT ',sum(' + QUOTENAME(section_name) + ') AS ' + QUOTENAME(section_name)

    from MMA_SECTION_MST WHERE CLIENT_ID=19 AND IN_USE=1

    --group by section_name

    --order by section_name

    FOR XML PATH(''), TYPE

    ).value('.', 'NVARCHAR(MAX)')

    ,1,1,'')

    set @query = N'SELECT CLIENT_ID,CLIENT_NAME, SITE_NO,SITE_ID,SITE_NAME,AUDIT_DATE, MANAGER, THIS_AUDIT_SCORE, REPEAT_FLAG, ALERTS_FLAG, ACTION_PLAN_FLAG, ' + @cols1 + N' ,Previous_Audit_score,Previous_Audit_date INTO MMA_AUDITSUM_STG_' + '19' + ' FROM

    (

    SELECT CM.CLIENT_ID AS CLIENT_ID,CM.CLIENT_NAME AS CLIENT_NAME, S.SITE_NO,S.SITE_ID,S.SITE_NAME,Q.AUDIT_DATE, AL.MANAGER,

    SM.SECTION_NAME ,SUM(Q.SCORED) AS

    SCORED,SUM(QM.AVAILABLE_SCORE) AS AVAILABLE_SCORE,

    ROUND(SUM(Q.SCORED) * 100/ SUM(QM.AVAILABLE_SCORE),2) AS SCORE_PER,

    0 AS Previous_Audit_score,''2014-07-04'' AS Previous_Audit_date,

    (100.00*0) AS THIS_AUDIT_SCORE,0 AS REPEAT_FLAG,0 AS ALERTS_FLAG,0 AS ACTION_PLAN_FLAG

    FROM MMA_QUESTION_MST QM LEFT OUTER JOIN MMA_QUESTION_DAT Q ON Q.CLIENT_ID =

    QM.CLIENT_ID AND Q.QUESTION_NO=QM.QUESTION_NO AND Q.CLIENT_ID=19

    ,MMA_SITE_MST S, MMA_SECTION_MST SM, MMA_CLIENT_MST CM, MMA_AUDITOR_LOGIN AL, MMA_AUDITSTATUS_DAT ADS

    WHERE Q.CLIENT_ID = S.CLIENT_ID AND Q.SITE_ID = S.SITE_ID

    AND Q.CLIENT_ID =19

    AND SM.CLIENT_ID = QM.CLIENT_ID

    AND SM.SECTION_ID = QM.SECTION_ID

    AND CM.CLIENT_ID = Q.CLIENT_ID

    AND AL.CLIENT_ID = Q.CLIENT_ID

    AND AL.SITE_ID = Q.SITE_ID

    AND AL.AUDIT_DATE = Q.AUDIT_DATE

    AND ADS.CLIENT_ID=Q.CLIENT_ID

    AND ADS.SITE_ID=Q.SITE_ID

    AND ADS.AUDIT_DATE=Q.AUDIT_DATE

    AND ADS.STATUS_ID=3

    AND QM.QUESTION_CATEGORY<>''Report''

    GROUP BY CM.CLIENT_ID,CM.CLIENT_NAME,S.SITE_ID,S.SITE_NO,S.SITE_NAME,Q.AUDIT_DATE,

    SM.SECTION_NAME, AL.MANAGER

    ) x

    pivot

    (

    max(SCORE_PER)

    for section_name in (' + @cols + N')

    ) p GROUP BY CLIENT_ID,CLIENT_NAME,SITE_NO,SITE_ID,SITE_NAME,AUDIT_DATE, MANAGER,Previous_Audit_score,Previous_Audit_date,THIS_AUDIT_SCORE, REPEAT_FLAG, ALERTS_FLAG, ACTION_PLAN_FLAG'

    IF OBJECT_ID('dbo.MMA_AUDITSUM_STG_19') IS NOT NULL DROP TABLE MMA_AUDITSUM_STG_19

    exec sp_executesql @query;

    SELECT S.CLIENT_ID,S.SITE_ID,S.SITE_NO,S.SITE_NAME,Q.AUDIT_DATE,SUM(Q.SCORED) AS SCORED,SUM

    (QM.AVAILABLE_SCORE) AS AVAILABLE_SCORE,

    ROUND(SUM(Q.SCORED) * 100/ SUM(QM.AVAILABLE_SCORE),2) AS SCORE_PER, SUM(CASE

    WHEN REPEATED>0 THEN 1 ELSE 0 END) AS REPEATED,SUM(CASE WHEN ALERT>0 THEN 1

    ELSE 0 END) AS ALERT, GV.ALERT_KEY_PER ,GV.REPEAT_KEY_PER, MAX(QA.ACTIONPER ) AS ACTION_PER,

    (ROUND(SUM(Q.SCORED) * 100/ SUM(QM.AVAILABLE_SCORE),3) + (SUM(CASE WHEN ALERT>0 THEN 1 ELSE 0 END) * GV.ALERT_KEY_PER) +

    (SUM(CASE WHEN REPEATED>0 THEN 1 ELSE 0 END) * GV.REPEAT_KEY_PER) - isnull(MAX(QA.ACTIONPER),0) ) AS FINAL_SCORE into #MMA_TEMP

    FROM MMA_QUESTION_MST QM LEFT OUTER JOIN MMA_QUESTION_DAT Q ON Q.CLIENT_ID =

    QM.CLIENT_ID AND Q.QUESTION_NO=QM.QUESTION_NO AND Q.CLIENT_ID=19

    LEFT OUTER JOIN MMA_QAUDIT_DAT QA ON QA.CLIENT_ID = Q.CLIENT_ID AND QA.SITE_ID = Q.SITE_ID AND QA.AUDIT_DATE = Q.AUDIT_DATE

    ,MMA_SITE_MST S, MMA_GLOBALVAR_MST GV

    WHERE Q.CLIENT_ID = S.CLIENT_ID AND Q.SITE_ID = S.SITE_ID

    AND Q.CLIENT_ID =19

    AND GV.CLIENT_ID = Q.CLIENT_ID

    AND QM.QUESTION_CATEGORY<>'Report'

    GROUP BY S.CLIENT_ID,S.SITE_ID,S.SITE_NO,S.SITE_NAME,Q.AUDIT_DATE,GV.ALERT_KEY_PER ,GV.REPEAT_KEY_PER

    UPDATE MMA_AUDITSUM_STG_19 SET THIS_AUDIT_SCORE= ISNULL((SELECT round(A.FINAL_SCORE,0) FROM #MMA_TEMP A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE),0)

    UPDATE MMA_AUDITSUM_STG_19 SET REPEAT_FLAG= ISNULL((SELECT A.REPEATED FROM #MMA_TEMP A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE),0)

    UPDATE MMA_AUDITSUM_STG_19 SET ALERTS_FLAG= ISNULL((SELECT A.ALERT FROM #MMA_TEMP A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE),0)

    UPDATE MMA_AUDITSUM_STG_19 SET ACTION_PLAN_FLAG= ISNULL((SELECT COUNT(*) FROM MMA_QAUDIT_DAT A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE

    AND A.ACTIONPER<>0),0)

    UPDATE MMA_AUDITSUM_STG_19 SET PREVIOUS_AUDIT_DATE= ISNULL((select MAX(SH.AUDIT_DATE) from MMA_SITEHIST_DAT SH LEFT OUTER JOIN MMA_AUDITSTATUS_DAT AST ON AST.CLIENT_ID =SH.CLIENT_ID

    AND AST.SITE_ID = SH.SITE_ID AND AST.AUDIT_DATE =SH.AUDIT_DATE AND AST.STATUS_ID =3

    WHERE SH.CLIENT_ID =19

    AND SH.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND SH.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND SH.AUDIT_DATE < MMA_AUDITSUM_STG_19.AUDIT_DATE),'1900-01-01')

    UPDATE MMA_AUDITSUM_STG_19 SET PREVIOUS_AUDIT_SCORE= ISNULL((SELECT A.SCORED FROM MMA_SITEHIST_DAT A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.PREVIOUS_AUDIT_DATE),0)

    UPDATE MMA_AUDITSUM_STG_19 SET PREVIOUS_AUDIT_SCORE= ISNULL((SELECT A.FINAL_SCORE FROM #MMA_TEMP A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.PREVIOUS_AUDIT_DATE),0)

    WHERE EXISTS (SELECT 'X' FROM #MMA_TEMP A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.PREVIOUS_AUDIT_DATE)

    DROP TABLE #MMA_TEMP

    ALTER TABLE MMA_AUDITSUM_STG_19 ADD RISKIDENTIFIED_1 nvarchar(max)

    ALTER TABLE MMA_AUDITSUM_STG_19 ADD RISKIDENTIFIED_2 nvarchar(max)

    ALTER TABLE MMA_AUDITSUM_STG_19 ADD RISKIDENTIFIED_3 nvarchar(max)

    UPDATE MMA_AUDITSUM_STG_19 SET RISKIDENTIFIED_1= ISNULL((SELECT A.RISK_IDENTIFIED FROM MMA_KEYRISK_DAT A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE

    AND A.RISK_ID=1),' ')

    UPDATE MMA_AUDITSUM_STG_19 SET RISKIDENTIFIED_2= ISNULL((SELECT A.RISK_IDENTIFIED FROM MMA_KEYRISK_DAT A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE

    AND A.RISK_ID=2),' ')

    UPDATE MMA_AUDITSUM_STG_19 SET RISKIDENTIFIED_3= ISNULL((SELECT A.RISK_IDENTIFIED FROM MMA_KEYRISK_DAT A

    WHERE A.CLIENT_ID = MMA_AUDITSUM_STG_19.CLIENT_ID

    AND A.SITE_ID = MMA_AUDITSUM_STG_19.SITE_ID

    AND A.AUDIT_DATE = MMA_AUDITSUM_STG_19.AUDIT_DATE

    AND A.RISK_ID=3),' ')

    Thanks,

    J