﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="c4143f53-ecd8-4cc2-a48d-bd023c49216e" codekey="Kosmos_QuestionstatisticsCrossMandatorsWithDateRange" categoryCodekey="TestsAndQuestions" name="Fragenstatistik Mandantenübergreifend (mit Zeitraumsangabe)" description="">
      <MetaData created="2011-12-20T14:36:52" createdBy="Administrator Zentrale" createdBy_user_id="12" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="0ab3e804-57cb-42a7-82a3-a6fd412d317d" mandatorName="Kosmos" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isRequired="False" name="Zeitraum" contextName="Zeitraum" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>-- Schlüssel für Code: 
-- Name:               Fragenstatistik Mandantenübergreifend
-- Beschreibung:       
-- Ergebnisformat:     Tabelle
-- Für alle Mandanten: Ja

set @dateRange_end= dateadd(day,1,@dateRange_end)

CREATE TABLE #IntermediateResult
(
 type INT, numberSuffix INT,LernzielnameIntern varchar(1024),Fragenbaumstruktur varchar(2048),
 beantwortet INT,richtig_beantwortet INT,nicht_beantwortet INT,Antwort_A INT,Antwort_B INT,
 Antwort_C INT,Antwort_D INT,Antwort_E INT,Antwort_F INT,
 Antwort_G INT,Antwort_H INT,Antwort_I INT,Antwort_J INT
) 

-- Step 1  --
-- Fetch question stats in one step, group by question_Id

 INSERT INTO #IntermediateResult
  SELECT  
   tblTasQuestions.type as type,
   tblTasQuestions.numberSuffix AS Fragennummer,
   T1.internal_name AS LernzielnameIntern,
     (SELECT 
   CASE WHEN dbo.fn_GetResourceString(T10.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T10.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T9.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T9.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T8.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T8.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T7.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T7.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T6.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T6.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T5.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T5.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T4.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T4.name_resource_id,1031,1,1031) + '/' END + 
   CASE WHEN dbo.fn_GetResourceString(T1.name_resource_id,1031,1,1031) IS NULL THEN '' ELSE dbo.fn_GetResourceString(T1.name_resource_id,1031,1,1031) END
   FROM tblTasQuestionCategories AS T2 
   LEFT OUTER JOIN tblTasQuestionCategories AS T4
   ON (T4.ID = T2.parent_id AND (t4.parent_id IS NOT NULL AND t4.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T5
   ON (T5.ID = t4.parent_id AND (t5.parent_id IS NOT NULL  AND t5.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T6
   ON (T6.ID = t5.parent_id AND (t6.parent_id IS NOT NULL AND t6.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T7
   ON (T7.ID = t6.parent_id AND (t7.parent_id IS NOT NULL AND t7.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T8
   ON (T8.ID = t7.parent_id AND (t8.parent_id IS NOT NULL AND t8.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T9
   ON (T9.ID = t8.parent_id AND (t9.parent_id IS NOT NULL AND t9.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T10
   ON (T10.ID = t9.parent_id AND (t10.parent_id IS NOT NULL AND t10.specialPurpose &lt;&gt;2))
   LEFT OUTER JOIN tblTasQuestionCategories AS T11
   ON (T11.ID = t10.parent_id AND (t11.parent_id IS NOT NULL AND t11.specialPurpose &lt;&gt;2))
   WHERE 
   T2.ID = T1.Id
   ) AS Fragenbaumstruktur,
   (select COUNT(correct) from tblTasStatsTestSessionQuestions t1 
    INNER JOIN tblTasStatsTestSessions ON t1.testsession_id = tblTasStatsTestSessions.testsession_id
    INNER JOIN tblTasTests ON tblTasStatsTestSessions.test_id = tblTasTests.id
    where t1.question_Id = tblTasStatsTestSessionQuestions.question_id
    AND tblTasStatsTestSessions.visible = 1
    AND (@dateRange_start is null or tblTasStatsTestSessions.endDate&gt;=@dateRange_start)
    AND (@dateRange_end is null or tblTasStatsTestSessions.endDate&lt;@dateRange_end)
    AND tblTasTests.mode = 1)- SUM( CASE WHEN answer_index=0 THEN 1 ELSE 0 END) 
    AS beantwortet, 
   (select SUM(correct) from tblTasStatsTestSessionQuestions t1 
    INNER JOIN tblTasStatsTestSessions ON t1.testsession_id = tblTasStatsTestSessions.testsession_id
    INNER JOIN tblTasTests ON tblTasStatsTestSessions.test_id = tblTasTests.id
    where t1.question_Id = tblTasStatsTestSessionQuestions.question_id
    AND tblTasStatsTestSessions.visible = 1
    AND (@dateRange_start is null or tblTasStatsTestSessions.endDate&gt;=@dateRange_start)
    AND (@dateRange_end is null or tblTasStatsTestSessions.endDate&lt;@dateRange_end)
    AND tblTasTests.mode = 1) 
    AS richtig_beantwortet, 
	SUM( CASE WHEN tblTasQuestions.type in (1,2,3,6) and answer_index IS NULL THEN 1 ELSE 0 END) AS nicht_beantwortet,
	SUM( CASE WHEN answer_index=1 THEN 1 ELSE 0 END) AS Antwort_A,
	SUM( CASE WHEN answer_index=2 THEN 1 ELSE 0 END) AS Antwort_B,
	SUM( CASE WHEN answer_index=3 THEN 1 ELSE 0 END) AS Antwort_C,
	SUM( CASE WHEN answer_index=4 THEN 1 ELSE 0 END) AS Antwort_D,
	SUM( CASE WHEN answer_index=5 THEN 1 ELSE 0 END) AS Antwort_E,
	SUM( CASE WHEN answer_index=6 THEN 1 ELSE 0 END) AS Antwort_F,
	SUM( CASE WHEN answer_index=7 THEN 1 ELSE 0 END) AS Antwort_G,
	SUM( CASE WHEN answer_index=8 THEN 1 ELSE 0 END) AS Antwort_H,
	SUM( CASE WHEN answer_index=9 THEN 1 ELSE 0 END) AS Antwort_I,
	SUM( CASE WHEN answer_index=10 THEN 1 ELSE 0 END) AS Antwort_j
  FROM tblTasStatsTestSessionQuestions
   INNER JOIN tblTasQuestionCategoryQuestions ON tblTasStatsTestSessionQuestions.question_id = tblTasQuestionCategoryQuestions.question_id
   INNER JOIN tblTasQuestionCategories AS T1 ON tblTasQuestionCategoryQuestions.category_Id = T1.id
   INNER JOIN tblTasQuestions ON tblTasQuestionCategoryQuestions.question_id = tblTasQuestions.id
   INNER JOIN tblTasStatsTestSessions ON tblTasStatsTestSessionQuestions.testsession_id = tblTasStatsTestSessions.testsession_id
   INNER JOIN tblTasTests ON tblTasStatsTestSessions.test_id = tblTasTests.id
   LEFT OUTER JOIN tblTasQuestionCategories AS TParent ON T1.parent_id = TParent.ID
   LEFT JOIN tblTasStatsQuestionsChoice ON (tblTasStatsTestSessionQuestions.testsession_id = tblTasStatsQuestionsChoice.testsession_id AND tblTasStatsTestSessionQuestions.question_id=tblTasStatsQuestionsChoice.question_id AND tblTasStatsQuestionsChoice.selected=1)
  WHERE T1.parent_id IS NOT NULL
   AND T1.specialPurpose &lt;&gt; 4
   AND dbo.fn_GetResourceString(TParent.name_resource_id,1031,1,1031) IS NOT NULL
   AND T1.categoryType = 3
   AND tblTasStatsTestSessions.visible = 1
   AND tblTasTests.mode = 1
   AND tblTasQuestions.deleted IS NULL
   AND (@dateRange_start is null or tblTasStatsTestSessions.endDate&gt;=@dateRange_start)
   AND (@dateRange_end is null or tblTasStatsTestSessions.endDate&lt;@dateRange_end)
   	
  GROUP BY tblTasStatsTestSessionQuestions.question_id,
  tblTasQuestions.numberSuffix, tblTasQuestions.type, T1.internal_name, T1.ID, T1.specialPurpose, T1.name_resource_id

-- Step 1a --

-- correct not answered count due to missing entries
update #IntermediateResult set nicht_beantwortet = beantwortet - richtig_beantwortet where nicht_beantwortet &gt; beantwortet - richtig_beantwortet

-- Clear informations for cloze, cloze pulldown and combined questions

update #IntermediateResult
set 
    Antwort_A=0,
    Antwort_B=0,
    Antwort_C=0,
    Antwort_D=0,
    Antwort_E=0,
    Antwort_F=0,
    Antwort_G=0,
    Antwort_H=0,
    Antwort_I=0,
    Antwort_J=0
where type=2 or type=4 or type=6 or type=7

-- Step 2  --
-- group results by Learning Target

  SELECT
 numberSuffix,
 LernzielnameIntern, 
 Fragenbaumstruktur, 
 SUM(beantwortet) as beantwortet,
 SUM(richtig_beantwortet) as richtig_beantwortet,
 SUM(beantwortet - richtig_beantwortet - nicht_beantwortet) as falsch_beantwortet,
 SUM(nicht_beantwortet) as nicht_beantwortet,
 SUM(Antwort_A) as Antwort_A,
 SUM(Antwort_B) as Antwort_B,
 SUM(Antwort_C) as Antwort_C,
 SUM(Antwort_D) as Antwort_D,
 SUM(Antwort_E) as Antwort_E,
 SUM(Antwort_F) as Antwort_F,
 SUM(Antwort_G) as Antwort_G,
 SUM(Antwort_H) as Antwort_H,
 SUM(Antwort_I) as Antwort_I,
 SUM(Antwort_J) as Antwort_J
  FROM #IntermediateResult
  GROUP BY numberSuffix, LernzielnameIntern, Fragenbaumstruktur
  ORDER BY fragenbaumstruktur, numberSuffix

DROP TABLE #IntermediateResult
</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isSystem="True" name="Zeitraum" reportParameterType_id="abff13be-91c3-4ee1-93a3-7292f8e013ba" queryParameterName="@dateRange" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="abff13be-91c3-4ee1-93a3-7292f8e013ba" isSystem="True" name="DateRange" datatype="DateRange" dataValueField="" dataTextField="" />
  </ParameterTypes>
</ReportsExport>