﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="db7b8fb1-c091-4700-a3c7-6b516cd13206" codekey="ERGO_PortfolieAnalyse" categoryCodekey="" name="Gesamtübersicht Angebots-Portfolio" description="Eine Auflistung aller Bausteine und der dazugehörenden Metadaten.">
      <MetaData created="2023-07-04T17:00:05" createdBy="Administrator, ERGO_e-Campus (Administrator)" createdBy_user_id="243" modified="2023-07-04T17:00:05" modifiedBy="Administrator, ERGO_e-Campus (Administrator)" modifiedBy_user_id="243" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="True" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="bfa70f6b-484c-49da-9ad7-1ccd8f0d684c" mandatorName="ERGO" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="19308b6b-d4fd-43a8-b8fc-68ac4606cd34" isRequired="False" allowMultiSelect="False" name="Einzelne Zielgruppe" contextName="Zielgruppe" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <!--<Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isRequired="True" allowMultiSelect="False" name="Zeitraum" contextName="Zeitraum" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />-->
      </Parameters>
      <Roles />
      <command>-- ------------------------------------------------------------
-- START: Test variables
-- ------------------------------------------------------------
--DECLARE @current_mandator_id uniqueidentifier;
--SELECT
--    @current_mandator_id = id
--FROM
--    tblMandators
--WHERE
--    name = &apos;ERGO_e-Campus&apos;;

--DECLARE @distinctTargetGroup_id int = 2833;
--DECLARE @dateRange_start datetime = NULL;
--DECLARE @dateRange_end datetime = NULL;
-- ------------------------------------------------------------
-- END: Test variables
-- ------------------------------------------------------------

-- For the specified target group all chained items
IF OBJECT_ID(&apos;tempdb..#TGItemChain&apos;) IS NOT NULL
    DROP TABLE #TGItemChain;

CREATE TABLE #TGItemChain
(
    itemId UNIQUEIDENTIFIER NOT NULL,
    itemTypeId INT NOT NULL,
    moduleId UNIQUEIDENTIFIER NULL,
    eduOfferId UNIQUEIDENTIFIER NULL
)
IF @distinctTargetGroup_id IS NOT NULL
BEGIN
    INSERT INTO
        #TGItemChain
    SELECT DISTINCT
        i_i.item_id,
        i_i.itemType_id,
        eom.module_id,
        eom.eduOffer_id
    FROM
        v_Items i_i
        JOIN tblModuleItems mi
            ON  mi.item_id = i_i.item_id
        JOIN v_Items m_i
            ON  m_i.item_id = mi.module_id
        JOIN tblEduOffersModules eom
            ON  eom.module_id = mi.module_id
        JOIN v_Items e_i
            ON  e_i.item_id = eom.eduOffer_id
        JOIN tblEduOffersTargetGroups eot
            ON  eot.eduOffer_id = eom.eduOffer_id
    WHERE
        i_i.mandator_id = @current_mandator_id
        AND eot.targetGroup_id = @distinctTargetGroup_id
END
ELSE
BEGIN
    -- No specific target group specified, we don&apos;t filter on it
    INSERT INTO
        #TGItemChain
    SELECT DISTINCT
        i_i.item_id,
        i_i.itemType_id,
        eom.module_id,
        eom.eduOffer_id
    FROM
        v_Items i_i
        JOIN tblModuleItems mi
            ON  mi.item_id = i_i.item_id
        JOIN v_Items m_i
            ON  m_i.item_id = mi.module_id
        JOIN tblEduOffersModules eom
            ON  eom.module_id = mi.module_id
        JOIN v_Items e_i
            ON  e_i.item_id = eom.eduOffer_id
    WHERE
        i_i.mandator_id = @current_mandator_id
END

IF OBJECT_ID(&apos;tempdb..#DistinctItems&apos;) IS NOT NULL
    DROP TABLE #DistinctItems;

CREATE TABLE #DistinctItems
(
    itemId UNIQUEIDENTIFIER PRIMARY KEY,
    itemTypeId INT
);

INSERT INTO
    #DistinctItems(itemId, itemTypeId)
SELECT DISTINCT
    itemId,
    itemTypeId
FROM
    #TGItemChain


IF OBJECT_ID(&apos;tempdb..#Users&apos;) IS NOT NULL
    DROP TABLE #Users;

CREATE TABLE #Users
(
    user_id INT PRIMARY KEY
);

-- Users
IF @distinctTargetGroup_id IS NULL
BEGIN
    INSERT INTO
        #Users
    SELECT
        intUserCn
    FROM
        v_Users
    WHERE
        mandator_id = @current_mandator_id
END
ELSE
BEGIN
    INSERT INTO
        #Users
    SELECT
        u.intUserCn
    FROM
        tblUsersTargetGroups utg
        -- Filter for standard, non-deleted users
        JOIN v_Users u
            ON u.intUserCn = utg.UserCn
    WHERE
        utg.targetGroup_id = @distinctTargetGroup_id;
END

-- Aggregate user information for WBTs and Tests
IF OBJECT_ID(&apos;tempdb..#WbtTestAggregates&apos;) IS NOT NULL
    DROP TABLE #WbtTestAggregates;

CREATE TABLE #WbtTestAggregates
(
    item_id uniqueidentifier,
    itemType_id int,
    totalUsers int,
    usersExecutedItem int,
    avgLearningDurationItem int,
    totalLearningDurationItem int,
    totalExecutionsItem int,
    greenStatuses int,
    yellowStatuses int,
    redStatuses int
);

-- getting items for the users of the targetgroup currently assigned
;WITH PotentialItems
(
    item_id,
    itemType_id
)
AS
(
    SELECT
        itemId AS item_id,
        itemTypeId AS itemType_id
    FROM
        #DistinctItems
    WHERE
        itemTypeId IN(0, 1)
)
INSERT INTO
    #WbtTestAggregates
SELECT
    item_id,
    itemType_id,
    (
        SELECT
            COUNT(*)
        FROM
            #users
    ),
    0,
    0,
    0,
    0,
    0,
    0,
    0
FROM
    PotentialItems;

-- getting the green statuses for those items and users
-- getting the yellow statuses for those items and users
-- getting the red statuses for those items and users
UPDATE
    #WbtTestAggregates
SET
    usersExecutedItem = calc.usersCount,
    greenStatuses = calc.greenStatus,
    yellowStatuses = calc.yellowStatus,
    redStatuses = calc.redStatus
FROM
    #WbtTestAggregates
    JOIN
    (
        -- for each user of the targetgroups we have to detect the items MAX status for calculation
        SELECT
            item_id,
            COUNT(*) usersCount,
            SUM
            (
                CASE
                    WHEN itemStatus = 4 THEN 1
                    ELSE 0
                END
            ) AS greenStatus,
            --needed because the MAX logic wouldn&apos;t work else
            SUM
            (
                CASE
                    WHEN itemStatus = 1 THEN 1
                    ELSE 0
                END
            ) AS yellowStatus,
            SUM
            (
                CASE
                    WHEN itemStatus = 3 THEN 1
                    ELSE 0
                END
            ) AS redStatus
        FROM
        (
            -- we have to calculate the max status for the user
            SELECT
                MAX
                (
                    CASE
                        WHEN status = 2 THEN 4
                        ELSE status
                    END
                ) AS itemStatus,
                suih.item_id
            FROM
                tblStatusUserItemHistory AS suih
                JOIN #Users AS users
                    ON users.user_id = suih.user_id
                JOIN #WbtTestAggregates AS items
                    ON items.item_id = suih.item_id
            --WHERE
            --    suih.startDate BETWEEN @dateRange_start AND @dateRange_end
            GROUP BY
                suih.user_id,
                suih.item_id
        ) AS innerQuery
        GROUP BY
            item_id
    ) AS calc
        ON calc.item_id = #WbtTestAggregates.item_id;


UPDATE
    #WbtTestAggregates
SET
    -- getting total calls of the WBTs
    totalExecutionsItem = ISNULL(wbtAggregates.totalExecutionsItem, 0),
    -- getting total learning duration for the WBTs
    totalLearningDurationItem = ISNULL(wbtAggregates.totalLearningDurationItem, 0),
    -- getting avg learning duration for the WBT and user
    avgLearningDurationItem = ISNULL(wbtAggregates.avgLearningDurationItem, 0)
FROM
    (
        SELECT
            theme_id,
            COUNT(*) as totalExecutionsItem,
            SUM(tblStatsThemeSessions.durationSeconds) AS totalLearningDurationItem,
            AVG(tblStatsThemeSessions.durationSeconds) AS avgLearningDurationItem
        FROM
            tblStatsThemeSessions
            JOIN #Users
                ON #Users.user_id = tblStatsThemeSessions.user_id
                --AND tblStatsThemeSessions.startTime BETWEEN @dateRange_start AND @dateRange_end
        GROUP BY
            theme_id
    ) AS wbtAggregates
WHERE
    #WbtTestAggregates.itemType_id = 1
    AND wbtAggregates.theme_id = #WbtTestAggregates.item_id


-- getting total calls of the Tests
UPDATE
    #WbtTestAggregates
SET
    totalExecutionsItem = ISNULL(testAggregates.totalCount, 0),
    totalLearningDurationItem = ISNULL(testAggregates.totalLearnTime, 0),
    avgLearningDurationItem = ISNULL(testAggregates.avgLearnDuration, 0)
FROM
    (
        SELECT
            test_id,
            COUNT(*) as totalCount,
            SUM(DATEDIFF(MINUTE, startdate, enddate)) as totalLearnTime,
            AVG(DATEDIFF(MINUTE, startdate, endDate)) as avgLearnDuration

        FROM
            tblTasTestSessions
            JOIN #Users
                ON #users.user_id = tblTasTestSessions.user_id
                -- AND tblTasTestSessions.endDate BETWEEN @dateRange_start AND @dateRange_end
        GROUP BY
            test_id
    ) AS testAggregates
WHERE
    #WbtTestAggregates.itemType_id = 0
    AND testAggregates.test_id = #WbtTestAggregates.item_id


IF OBJECT_ID(&apos;tempdb..#ItemMapping&apos;) IS NOT NULL
    DROP TABLE #ItemMapping;

CREATE TABLE #ItemMapping
(
    id int,
    title varchar(20)
);

INSERT INTO
    #ItemMapping
VALUES
    (0, &apos;Test&apos;),
    (1, &apos;Lernprogramm&apos;),
    (2, &apos;Seminar&apos;),
    (3,	&apos;Umfrage&apos;),
    (4, &apos;Forum&apos;),
    (5, &apos;Datenaustausch&apos;),
    (6, &apos;Dokument&apos;),
    (7, &apos;Link&apos;),
    (8, &apos;Seminartitel&apos;),
    (9, &apos;Video&apos;),
    (15, &apos;Feedback&apos;),
    (50, &apos;Extern&apos;),
    (1000, &apos;Bildungsangebot&apos;),
    (1001, &apos;Modul&apos;);

IF OBJECT_ID(&apos;tempdb..#RightMapping&apos;) IS NOT NULL
    DROP TABLE #RightMapping;

CREATE TABLE #RightMapping
(
    id int,
    title varchar(10)
);

INSERT INTO
    #RightMapping
VALUES
    (0, &apos;Keine&apos;),
    (1, &apos;Lesen&apos;),
    (2, &apos;Schreiben&apos;);

IF OBJECT_ID(&apos;tempdb..#AvailabilityMapping&apos;) IS NOT NULL
    DROP TABLE #AvailabilityMapping;

CREATE TABLE #AvailabilityMapping
(
    isAvailable BIT,
    isRestricted BIT,
    title varchar(31)
);

INSERT INTO
    #AvailabilityMapping
VALUES
    (0, 0, &apos;&apos;),
    (0, 1, &apos;&apos;),
    (1, 0, &apos;Für alle verfügbar&apos;),
    (1, 1, &apos;Einschränkung auf Nutzergruppen&apos;);

IF OBJECT_ID(&apos;tempdb..#LearningTypeMapping&apos;) IS NOT NULL
    DROP TABLE #LearningTypeMapping;

CREATE TABLE #LearningTypeMapping
(
    id int,
    title nvarchar(100)
);

INSERT INTO
    #LearningTypeMapping
VALUES
    (1, 	&apos;Präsenzveranstaltung&apos;),
    (2, 	&apos;Einzeltraining&apos;),
    (3, 	&apos;Blended Learning&apos;),
    (4, 	&apos;Gesteuertes E-Learning&apos;),
    (5, 	&apos;Selbstgesteuertes E-Learning/Lernen&apos;),
    (6, 	&apos;Lernen am Arbeitsplatz&apos;);

IF OBJECT_ID(&apos;tempdb..#TestModeMapping&apos;) IS NOT NULL
    DROP TABLE #TestModeMapping;

CREATE TABLE #TestModeMapping
(
    id int,
    title nvarchar(100)
);

INSERT INTO
    #TestModeMapping
VALUES
    (0, &apos;Übung&apos;),
    (1, &apos;Prüfung&apos;),
    (2, &apos;Umfrage&apos;),
    (3, &apos;Feedback&apos;);

IF OBJECT_ID(&apos;tempdb..#TargetDeviceMapping&apos;) IS NOT NULL
    DROP TABLE #TargetDeviceMapping;

CREATE TABLE #TargetDeviceMapping
(
    id int,
    title nvarchar(100)
);

INSERT INTO
    #TargetDeviceMapping
VALUES
    (0, &apos;Desktop&apos;),
    (1, &apos;Tablet&apos;),
    (2, &apos;Smartphone&apos;);


IF OBJECT_ID(&apos;tempdb..#LanguageMapping&apos;) IS NOT NULL
    DROP TABLE #LanguageMapping;

CREATE TABLE #LanguageMapping
(
    id int,
    title nvarchar(100)
);

INSERT INTO
    #LanguageMapping
VALUES
    (1031, &apos;Deutsch&apos;),
    (1033, &apos;Englisch&apos;);

IF OBJECT_ID(&apos;tempdb..#LearningContentMapping&apos;) IS NOT NULL
    DROP TABLE #LearningContentMapping;

CREATE TABLE #LearningContentMapping
(
    code nvarchar(50) PRIMARY KEY,
    learningContent nvarchar(100)
);

INSERT INTO
    #LearningContentMapping
VALUES
    (&apos;Insurance1&apos;, &apos;Privat-Vorsorge-Lebens-/Rentenversicherung&apos;),
    (&apos;Insurance2&apos;, &apos;Privat-Vorsorge-Kranken-/Pflegeversicherung&apos;),
    (&apos;Insurance3&apos;, &apos;Privat-Sach-/Schadenversicherung&apos;),
    (&apos;Insurance4&apos;, &apos;Firmenkunden-Sach-/Schadenversicherung&apos;),
    (&apos;Insurance5General&apos;, &apos;Mehrere versicherungsrelevante Themen&apos;),
    (&apos;Insurance6Business&apos;, &apos;Firmenkunden-Vorsorge (bAV/Personenversicherung)&apos;),
    (&apos;Consulting&apos;, &apos;Kundenorientierte Beratung im Versicherungsvertrieb&apos;),
    (&apos;Insurance7&apos;, &apos;Management einer Vertriebseinheit in der Versicherungswirtschaft&apos;),
    (&apos;Insurance8&apos;, &apos;Wirtschaftswissenschaften mit Bezug zur Versicherungsvermittlung/-beratung&apos;),
    (&apos;Insurance9&apos;, &apos;Personalführung mit Bezug zur Versicherungsvermittlung/-beratung&apos;),
    (&apos;Insurance10&apos;, &apos;Versicherungsspezifische Software&apos;)


IF OBJECT_ID(&apos;tempdb..#UserFullName&apos;) IS NOT NULL
    DROP TABLE #UserFullName;

CREATE TABLE #UserFullName
(
    user_id int PRIMARY KEY,
    fullName nvarchar(325)
);

INSERT INTO
    #UserFullName(user_id, fullName)
SELECT
    intUserCn, FullName
FROM
    tableUsers -- Note: here we are consciously choosing tableUsers over v_Users as we want to include system users
WHERE
    mandator_id = @current_mandator_id
    and deleted is null -- not deleted
    and intUserCn &gt; 0 -- not pre-deleted (as here fullName is null anyway)

-- This differs from #TGItemChain in that it covers all chain connections to the items in our list even
-- if there is no relation to the selected target group.  By extension this covers all modules and edu
-- offers in our list as well (going back from item) but _NOT_ going forward from edu offer or module.
-- e.g. can&apos;t be used to list all items belonging to any module in this list.
IF OBJECT_ID(&apos;tempdb..#UnfilteredItemChain&apos;) IS NOT NULL
    DROP TABLE #UnfilteredItemChain;

CREATE TABLE #UnfilteredItemChain
(
    item_id UNIQUEIDENTIFIER,
    module_id UNIQUEIDENTIFIER,
    moduleTitle NVARCHAR(255),
    eduOffer_id UNIQUEIDENTIFIER,
    eduOfferTitle NVARCHAR(255),
    targetGroup_id INT,
    targetGroupTitle VARCHAR(2048)
);

INSERT INTO
    #UnfilteredItemChain
    (
        item_id,
        module_id,
        moduleTitle,
        eduOffer_id,
        eduOfferTitle,
        targetGroup_id,
        targetGroupTitle
    )
SELECT
    itemId,
    mi.module_id,
    LTRIM(RTRIM(m_i.title)),
    eom.eduOffer_id,
    LTRIM(RTRIM(eo_i.title)),
    eot.targetGroup_id,
    LTRIM(RTRIM(tg.title))
FROM
    #DistinctItems i
    JOIN tblModuleItems mi
        ON  mi.item_id = i.itemId
    JOIN tblItems m_i
        ON  m_i.id = mi.module_id
        AND m_i.deleted IS NULL
    LEFT JOIN tblEduOffersModules eom
        ON  eom.module_id = mi.module_id
    LEFT JOIN tblItems eo_i
        ON  eo_i.id = eom.eduOffer_id
        AND eo_i.deleted IS NULL
    LEFT JOIN tblEduOffersTargetGroups eot
        ON  eot.eduOffer_id = eom.eduOffer_id
    LEFT JOIN tblTargetGroups tg
        ON  tg.id = eot.targetGroup_id

/* Shortcut to not setup all temp tables when running in SSMS
DECLARE @current_mandator_id uniqueidentifier;
SELECT
    @current_mandator_id = id
FROM
    tblMandators
WHERE
    name = &apos;ERGO_e-Campus&apos;;
End Shortcut */

DECLARE @LinkUrlRoot VARCHAR(200) = &apos;https://e-campus.ergo.com/e-campus/default.aspx?mandator_id=&apos; + dbo.fn_UrlEncode(CAST(@current_mandator_id AS VARCHAR(36)))
DECLARE @InfoLinkUrlRoot VARCHAR(200) = @LinkUrlRoot + &apos;&amp;infoMode=1&amp;linkTag=&apos;
DECLARE @DirektLinkUrlRoot VARCHAR(200) = @LinkUrlRoot + &apos;&amp;infoMode=0&amp;linkTag=&apos;
-- Output
SELECT
    -- Edu Offer
    -- eo_i.id as &apos;Bildungsangebot ID&apos;,
    eo_i.Title as &apos;Bildungsangebot Titel&apos;,
    eo_i.TitleForLearners as &apos;Bildungsangebot Titel für Lerner&apos;,
    dbo.fn_StripHTML(eo_i.[description]) as &apos;Bildungsangebot Beschreibung&apos;,
    eo_i.trainerinfo as &apos;Bildungsangebot Trainerinfo&apos;,
    eo_i.tag as &apos;Bildungsangebot Kennzeichen&apos;,
    eo_i.tag2 as &apos;Bildungsangebot ED-SAP Schnittstelle&apos;,
    eo_i.contentOwner as &apos;Bildungsangebot Content-Owner&apos;,
    eo_i.infoUrl as &apos;Bildungsangebot Video-URL&apos;,
        CASE eo_i.isInfoLinkGenerated
        WHEN 1 THEN @InfoLinkUrlRoot + dbo.fn_UrlEncode(eo_i.tag)
        ELSE &apos;&apos;
    END as &apos;Bildungsangebot Link zur Info-Seite&apos;,
    IIF(eo.isMandatory &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Bildungsangebot Verpflichtend&apos;,
    eo_grm.Title as &apos;Bildungsangebot Berechtigung Global&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title)) + &apos; &apos; + CAST(rm.title AS VARCHAR)
                    FROM
                        tblOrganisationUnits ou
                        JOIN tblItemsOUPermissions eo_oup
                            ON  eo_oup.organisationUnit_id = ou.id
                        JOIN #RightMapping rm
                            ON  rm.id = eo_oup.permission
                    WHERE
                        eo_oup.item_id = eo.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot Berechtigung OE&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = eo_i.owner_id) as &apos;Bildungsangebot Besitzer&apos;,
    (SELECT MAX(mainVersionCreated) FROM tblVersionMap where id = eo_i.id) as &apos;Bildungsangebot Zuletzt geändert am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = eo_i.modifiedBy_user_id) as &apos;Bildungsangebot Zuletzt geändert von&apos;,
    eo_i.created as &apos;Bildungsangebot Erstellt am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = eo_i.createdBy_user_id) as &apos;Bildungsangebot Ersteller&apos;,
    IIF(eo_i.isAvailableForEduCatalog = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Bildungsangebot für den Bildungskatalog verfügbar&apos;,
    eo_am.title as &apos;Bildungsangebot verfügbar für&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title))
                    FROM
                        tblOrganisationUnits ou
                        JOIN [dbo].[tblItemAvailableForOrgUnitsEduCatalog] eo_ouec
                            ON  eo_ouec.orgUnit_id = ou.id
                    WHERE
                        eo_ouec.item_id = eo.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot Verfügbar für OE&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblItemAvailableForEduCatalog] eo_tgec
                            ON  eo_tgec.targetGroup_id = tg.id
                    WHERE
                        eo_tgec.item_id = eo.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot Verfügbar für ZG&apos;,
    eo_c.name as &apos;Bildungsangebot Ansprechpartner Name&apos;,
    IIF(eo_i.isPermissionRequired = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Bildungsangebot Genehmigung erforderlich&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblEduOffersTargetGroups] eotg
                            ON  eotg.targetGroup_id = tg.id
                    WHERE
                        eotg.eduOffer_id = eo.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete ZG&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + RTRIM(LTRIM(m_i_i.title))
                FROM
                    tblItems m_i_i
                    JOIN [dbo].[tblEduOffersModules] eom
                        ON  eom.module_id = m_i_i.id
                WHERE
                    eom.eduOffer_id = eo.id
                ORDER BY
                    m_i_i.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete Module&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + ta_mk_r.[Text]
                FROM
                    tblTopicAreas ta_mk
                    JOIN tblTopicAreasCurriculumEduOffers taceo
                        ON  taceo.topicArea_id = ta_mk.id
                    JOIN tblResources ta_mk_r
                        ON  ta_mk_r.id = ta_mk.localizedTitle_id
                        AND ta_mk_r.Language_ID = 1031
                WHERE
                    taceo.eduOffer_id = eo.id
                ORDER BY
                    ta_mk_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete Themenbereiche (Meine Kurse)&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + eo_ta_bk_r.[Text]
                FROM
                    [tblTopicAreasItems] eo_tai
                    JOIN tblTopicAreas eo_ta_bk
                        ON  eo_ta_bk.id = eo_tai.topicArea_id
                    JOIN tblResources eo_ta_bk_r
                        ON  eo_ta_bk_r.id = eo_ta_bk.localizedTitle_id
                        AND eo_ta_bk_r.Language_ID = 1031
                WHERE
                    eo_tai.item_id = eo.id
                ORDER BY
                    eo_ta_bk_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete Themenbereiche (Bildungskatalog)&apos;,

    -- Module
    --m_i.id as &apos;Modul ID&apos;,
    m_i.Title as &apos;Modul Titel&apos;,
    m_i.TitleForLearners as &apos;Modul Titel für Lerner&apos;,
    dbo.fn_StripHTML(m_i.[description]) as &apos;Modul Beschreibung&apos;,
    m_i.trainerinfo as &apos;Modul Trainerinfo&apos;,
    m_i.tag as &apos;Modul Kennzeichen&apos;,
    m_i.tag2 as &apos;Modul ED-SAP Schnittstelle&apos;,
    m_i.contentOwner as &apos;Modul Content-Owner&apos;,
    m_i.infoUrl as &apos;Modul Video-URL&apos;,
        CASE m_i.isInfoLinkGenerated
        WHEN 1 THEN @InfoLinkUrlRoot + dbo.fn_UrlEncode(m_i.tag)
        ELSE &apos;&apos;
    END as &apos;Modul Link zur Info-Seite&apos;,
    IIF(m_i.isVisibleInEducationCard = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Modul Im Bildungspass anzeigen&apos;,
    CASE m.viewMode
        WHEN 2 THEN &apos;Lernpfad&apos;
        WHEN 1 THEN &apos;Gruppierung&apos;
        WHEN 0 THEN &apos;Standard&apos;
    END as &apos;Modulansicht&apos;,
    m.[target] as &apos;Modul Lernziele&apos;,
    m.participants as &apos;Modul Teilnehmer&apos;,
    m.courseUnits as &apos;Modul Unterrichtseinheiten&apos;,
    m.trainers as &apos;Modul Referenten&apos;,
    IIF(m.isCurriculum = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Curriculum&apos;,
    m_grm.Title as &apos;Modul Berechtigung Global&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title)) + &apos; &apos; + CAST(rm.title AS VARCHAR)
                    FROM
                        tblOrganisationUnits ou
                        JOIN tblItemsOUPermissions oup
                            ON  oup.organisationUnit_id = ou.id
                        JOIN #RightMapping rm
                            ON  rm.id = oup.permission
                    WHERE
                        oup.item_id = m.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
                    0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Berechtigung OE&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = m_i.owner_id) as &apos;Modul Besitzer&apos;,
    (SELECT MAX(mainVersionCreated) FROM tblVersionMap where id = m_i.id) as &apos;Modul zuletzt geändert am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = m_i.modifiedBy_user_id) as &apos;Modul zuletzt geändert von&apos;,
    m_i.created as &apos;Modul erstellt am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = m_i.createdBy_user_id) as &apos;Modul Ersteller&apos;,
    CASE m.timeRestrictionType
        WHEN 2 THEN &apos;relative Termine&apos;
        WHEN 1 THEN &apos;feste Termine&apos;
        WHEN 0 THEN &apos;unbegrenzt&apos;
    END as &apos;Modul zeitliche Verfügbarkeit&apos;,
    CASE m.timeRestrictionType
        WHEN 2 THEN CAST(m.availableFromWeeks AS VARCHAR(2))
        WHEN 1 THEN CONVERT(VARCHAR(50), m.availableFrom, 121)
        ELSE &apos;&apos;
    END AS &apos;Modul verfügbar von&apos;,
    CASE m.timeRestrictionType
        WHEN 2 THEN CAST(m.availableToWeeks AS VARCHAR(2))
        WHEN 1 THEN CONVERT(VARCHAR(50), m.availableTo, 121)
        ELSE &apos;&apos;
    END AS &apos;Modul verfügbar bis&apos;,
    IIF(m.notificationEnabled = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Benachrichtigung zum Lernstand an den Lerner versenden&apos;,
    m.notificationStartWeeks as &apos;Modul Benachrichtigung Start&apos;,
    m.repeatNotificationInWeeks as &apos;Modul Benachrichtigung Versandhäufigkeit&apos;,
    m.notificationEndWeeks as &apos;Modul Benachrichtigung Ende&apos;,
    CASE m.scoringMode
        WHEN 2 THEN &apos;Summe der Bausteine&apos;
        WHEN 1 THEN &apos;Individuelle Vergabe&apos;
        WHEN 0 THEN &apos;Keine Bildungszeit für Modul&apos;
    END AS &apos;Vergabe Bildungszeit auf Modulebene&apos;,
    dbo.fn_GetEducationTimeString(m_i.educationTime) AS &apos;Modul Erwerbbare Bildungszeit&apos;,
    IIF(m.addItemScoreToModuleScore = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Bildungszeiten für Bausteine zählen zusätzlich zu den Bildungszeiten für Module&apos;,
    m_ltm.title as &apos;Modul Lernform&apos;,
    m_lcm.learningContent as &apos;Modul Lerninhalt&apos;,
    CASE
        WHEN m_i.requalificationPeriodType = 2
            THEN &apos;festes Intervall &apos; + CAST(m_i.newCreditPointsSpanMonths AS VARCHAR(3)) + &apos; Monaten&apos;
        WHEN m_i.requalificationPeriodType = 1
            THEN &apos;jährlich&apos;
        ELSE &apos;keine&apos;
    END AS &apos;Modul Zeitraum Re-Qualifizierung&apos;,
    ISNULL(m_cert.name, &apos;Kein Zertifikat zugeordnet&apos;) as &apos;Modul Zertifikat&apos;,
    ISNULL(CAST(m_i.overridespanmonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Zeitraum Re-Zertifizierung&apos;,
    ISNULL(CAST(m_i.overrideInitialMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Erst-Bearbeitung Re-Zertifizierung&apos;,
    ISNULL(CAST(m_i.overrideAlertSpanMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Erste Erinnerung Re-Zertifizierung&apos;,
    ISNULL(CAST(m_i.override2ndAlertSpanWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Zweite Erinnerung Re-Zertifizierung&apos;,
    IIF(m_i.isRateable = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Modul bewertbar&apos;,
    IIF(m_i.showRatingFromOthers = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Modul Bewertung von anderen Usern einsehbar&apos;,
    IIF(m_i.ratingReminderWeeks &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Erinnerung Bewertung&apos;,
    ISNULL(CAST(m_i.ratingReminderWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Zeitraum Erinnerung&apos;,
    IIF(m_i.isAvailableForEduCatalog &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Für den Bildungskatalog verfügbar?&apos;,
    m_am.title as &apos;Modul verfügbar für&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title))
                    FROM
                        tblOrganisationUnits ou
                        JOIN [dbo].[tblItemAvailableForOrgUnitsEduCatalog] m_ouec
                            ON  m_ouec.orgUnit_id = ou.id
                    WHERE
                        m_ouec.item_id = m.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Verfügbar für OE&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblItemAvailableForEduCatalog] m_tgec
                            ON  m_tgec.targetGroup_id = tg.id
                    WHERE
                        m_tgec.item_id = m.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Verfügbar für ZG&apos;,
    m_c.name as &apos;Modul Ansprechpartner Name&apos;,
    IIF(m_i.isPermissionRequired = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Genehmigung erforderlich&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(mi_i.title))
                    FROM
                        tblItems mi_i
                        JOIN [dbo].[tblModuleItems] mi
                            ON  mi.item_id = mi_i.id
                    WHERE
                        mi.module_id = m.id
                    ORDER BY
                        mi_i.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Zugewiesene Bausteine&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT DISTINCT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN tblEduOffersTargetGroups eotg
                            ON  eotg.targetGroup_id = tg.id
                        JOIN tblEduOffersModules eom
                            ON  eom.eduOffer_id = eotg.eduOffer_id
                    WHERE
                        eom.module_id = m.id
                    ORDER BY
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul zugeordnete ZG&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT DISTINCT
                    &apos;, &apos; + meo_i.title
                FROM
                    tblEduOffersModules eom
                    JOIN tblItems meo_i
                        ON  meo_i.id = eom.eduOffer_id
                WHERE
                    eom.module_id = m.id
                ORDER BY
                    &apos;, &apos; + meo_i.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Modul Zugewiesene Bildungsangebote&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + RTRIM(LTRIM(o.title))
                FROM
                    tblObjects o
                    JOIN tblQualificationsItems qi
                        ON  qi.qualification_id = o.id
                WHERE
                    o.deleted IS NULL
                    AND qi.item_id = m.id
                ORDER BY
                    o.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Modul zugeordnete Qualifizierungen&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + ta_r.[Text]
                FROM
                    [tblTopicAreasItems] tai
                    JOIN tblTopicAreas ta
                        ON  ta.id = tai.topicArea_id
                    JOIN tblResources ta_r
                        ON  ta_r.id = ta.localizedTitle_id
                        AND ta_r.Language_ID = 1031
                WHERE
                    tai.item_id = m.id
                ORDER BY
                    ta_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Modul zugeordnete Themenbereiche (Bildungskatalog)&apos;,

    -- Item
    --i.id AS &apos;Baustein ID&apos;,
    i.title AS &apos;Baustein Titel&apos;,
    i.TitleForLearners as &apos;Baustein Titel für Lerner&apos;,
    im.title AS &apos;Bausteintyp&apos;,
    tt_tm.title AS &apos;Testart&apos;,
    dbo.fn_StripHTML(i.[description]) AS &apos;Baustein Beschreibung&apos;,
    i.trainerinfo as &apos;Baustein Trainerinfo&apos;,
    i.tag as &apos;Baustein Kennzeichen&apos;,
    i.tag2 as &apos;Baustein ED-SAP Schnittstelle&apos;,
    i.contentOwner as &apos;Baustein Content-Owner&apos;,
    i.infoUrl as &apos;Baustein Video-URL&apos;,
        CASE i.isLinkGenerated
        WHEN 1 THEN @DirektLinkUrlRoot + dbo.fn_UrlEncode(i.tag)
        ELSE &apos;&apos;
    END as &apos;Baustein Direkt Link&apos;,
    CASE i.isInfoLinkGenerated
        WHEN 1 THEN @InfoLinkUrlRoot + dbo.fn_UrlEncode(i.tag)
        ELSE &apos;&apos;
    END as &apos;Baustein Link zur Info-Seite&apos;,
    IIF(i.isVisibleInEducationCard = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Baustein Im Bildungspass anzeigen&apos;,
    IIF(i.deleteAfterYears IS NOT NULL, IIF(i.deleteAfterYears = 1, CAST(i.deleteAfterYears as NVARCHAR(3)) + &apos; Jahr&apos;, CAST(i.deleteAfterYears as NVARCHAR(3)) + &apos; Jahre&apos;), &apos;&apos;)  AS &apos;Baustein Bearbeitungsstand löschen nach&apos;,
    CASE i.itemType_id
        WHEN 1 THEN theme.importPath
        WHEN 6 THEN doc.folderName
        ELSE &apos;&apos;
    END AS &apos;Baustein Import Ordner&apos;,
    theme.learningObjective as &apos;WBT Lernziele&apos;,
    -- This is actually just a label in the UI!  The standard label is &quot;Author&quot; but as ERGO has different role names this is what Author looks
    -- like for them.
    &apos;&apos; AS &apos;WBT Verantwortlicher für eine BM&apos;,
    theme.learningDuration as &apos;WBT Lerndauer&apos;,
    theme_td.title as &apos;WBT Zielgerät&apos;,
    theme.manifest_id as &apos;WBT Manifest ID&apos;,
    theme.themeVersion as &apos;WBT-Version&apos;,
    CASE tt.resultCalculationMode
        WHEN 0 THEN &apos;Gesamtergebnis&apos;
        WHEN 1 THEN &apos;Sachgebietsergebnis&apos;
        ELSE &apos;&apos;
    END AS &apos;Test Berechnung der Ergebnisse&apos;,
    tt.summaryPassingThreshold AS &apos;Test bestanden bei&apos;,
    tt.mainSubjectGroupThreshold AS &apos;Test Sachgebietsergebnis in einem mind.&apos;,
    tt.otherSubjectGroupsThreshold AS &apos;Test Sachgebietsergebnis in den anderen mind.&apos;,
    tt.useGrading AS &apos;Test Benotung&apos;,
    tt_lm.title AS &apos;Test Sprache für Navigation&apos;,
    i_grm.Title as &apos;Baustein Berechtigung Global&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title)) + &apos; &apos; + CAST(rm.title AS VARCHAR)
                    FROM
                        tblOrganisationUnits ou
                        JOIN tblItemsOUPermissions oup
                            ON  oup.organisationUnit_id = ou.id
                        JOIN #RightMapping rm
                            ON  rm.id = oup.permission
                    WHERE
                        oup.item_id = i.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),&apos;&apos;
    ) as &apos;Baustein Berechtigung OE&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = i.owner_id) as &apos;Baustein Besitzer&apos;,
    (SELECT MAX(mainVersionCreated) FROM tblVersionMap where id = i.id) as &apos;Baustein zuletzt geändert am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = i.modifiedBy_user_id) as &apos;Baustein zuletzt geändert von&apos;,
    i.created as &apos;Baustein erstellt am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = i.createdBy_user_id) as &apos;Baustein Ersteller&apos;,
    dbo.fn_GetEducationTimeString(i.educationTime) AS &apos;Baustein Erwerbbare Bildungszeit&apos;,
    i_ltm.title as &apos;Baustein Lernform&apos;,
    i_lcm.learningContent as &apos;Baustein Lerninhalt&apos;,
    CASE
        WHEN i.requalificationPeriodType = 2
            THEN &apos;festes Intervall &apos; + CAST(i.newCreditPointsSpanMonths AS VARCHAR(3)) + &apos; Monaten&apos;
        WHEN i.requalificationPeriodType = 1
            THEN &apos;jährlich&apos;
        ELSE &apos;keine&apos;
    END AS &apos;Baustein Zeitraum Re-Qualifizierung&apos;,
    ISNULL(i_cert.name, &apos;Kein Zertifikat zugeordnet&apos;) as &apos;Baustein Zertifikat&apos;,
    IIF(theme.calcStatusIncludeCompleted = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Lernprogramm muss vollständig bearbeitet sein&apos;,
    IIF(theme.calcStatusIncludeExams = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Test(s) muss bestanden sein&apos;,
    IIF(theme.calcStatusIncludeExercises = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT alle Übungen müssen richtig beantwortet sein&apos;,
    theme.keepScormDataDays AS &apos;WBT Anzahl Tage&apos;,
    IIF(theme.keepScormDataDays &gt; 0, &apos;Nein&apos;, &apos;Ja&apos;)&apos;WBT Lernstandsdaten nicht löschen&apos;,
    ISNULL(CAST(i.overridespanmonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Zeitraum Re-Zertifizierung&apos;,
    ISNULL(CAST(i.overrideInitialMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Erst-Bearbeitung Re-Zertifizierung&apos;,
    ISNULL(CAST(i.overrideAlertSpanMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Erste Erinnerung Re-Zertifizierung&apos;,
    ISNULL(CAST(i.override2ndAlertSpanWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Zweite Erinnerung Re-Zertifizierung&apos;,
    theme.StatusThreshold as &apos;WBT Lernprogramm-Status Im Lernprozess ab (%)&apos;,
    IIF(i.isRateable = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Baustein bewertbar&apos;,
    IIF(i.showRatingFromOthers = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Baustein Bewertung von anderen Usern einsehbar&apos;,
    IIF(i.ratingReminderWeeks &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Baustein Erinnerung Bewertung&apos;,
    ISNULL(CAST(i.ratingReminderWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Zeitraum Erinnerung&apos;,
    IIF(i.isAvailableForEduCatalog &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Baustein Für den Bildungskatalog verfügbar?&apos;,
    i_am.title as &apos;Baustein verfügbar für&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title))
                    FROM
                        tblOrganisationUnits ou
                        JOIN [dbo].[tblItemAvailableForOrgUnitsEduCatalog] ouec
                            ON  ouec.orgUnit_id = ou.id
                    WHERE
                        ouec.item_id = i.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),&apos;&apos;
    ) as &apos;Baustein Verfügbar für OE&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblItemAvailableForEduCatalog] tgec
                            ON  tgec.targetGroup_id = tg.id
                    WHERE
                        tgec.item_id = i.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),&apos;&apos;
    ) as &apos;Baustein Verfügbar für ZG&apos;,
    i_c.name as &apos;Baustein Ansprechpartner Name&apos;,
    IIF(i.isPermissionRequired = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Baustein Genehmigung erforderlich&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT DISTINCT
                        &apos;, &apos; + uic.targetGroupTitle
                    FROM
                        #UnfilteredItemChain uic
                    WHERE
                        uic.item_id = i.id
                        AND uic.targetGroupTitle IS NOT NULL
                    ORDER BY
                        &apos;, &apos; + targetGroupTitle
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Baustein zugeordnete ZG&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT DISTINCT
                    &apos;, &apos; + uic.eduOfferTitle
                FROM
                    #UnfilteredItemChain uic
                WHERE
                    uic.item_id = i.id
                    AND uic.eduOfferTitle IS NOT NULL
                ORDER BY
                    &apos;, &apos; + eduOfferTitle
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein Zugewiesene Bildungsangebote&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT DISTINCT
                    &apos;, &apos; + uic.moduleTitle
                FROM
                    #UnfilteredItemChain uic
                WHERE
                    uic.item_id = i.id
                    AND uic.moduleTitle IS NOT NULL
                ORDER BY
                    &apos;, &apos; + moduleTitle
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein Zugewiesene Module&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + RTRIM(LTRIM(o.title))
                FROM
                    tblObjects o
                    JOIN tblQualificationsItems qi
                        ON  qi.qualification_id = o.id
                WHERE
                    o.deleted IS NULL
                    AND qi.item_id = i.id
                ORDER BY
                    o.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein zugeordnete Qualifizierungen&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + ta_r.[Text]
                FROM
                    [tblTopicAreasItems] tai
                    JOIN tblTopicAreas ta
                        ON  ta.id = tai.topicArea_id
                    JOIN tblResources ta_r
                        ON  ta_r.id = ta.localizedTitle_id
                        AND ta_r.Language_ID = 1031
                WHERE
                    tai.item_id = i.id
                ORDER BY
                    ta_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein zugeordnete Themenbereiche (Bildungskatalog)&apos;,

    CASE i.itemType_id
        WHEN 1 THEN (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = theme.importedBy_user_id)
        WHEN 6 THEN (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = doc.importedBy_user_id)
        ELSE &apos;&apos;
    END AS &apos;Wer hat es zuletzt importiert&apos;,
    CASE i.itemType_id
        WHEN 1 THEN theme.importedDate
        WHEN 6 THEN doc.importedDate
        ELSE &apos;&apos;
    END AS &apos;Wann zuletzt importiert&apos;,
    wta.totalUsers AS &apos;Anzahl User in Zielgruppe&apos;,
    wta.usersExecutedItem AS &apos;Anzahl der tatsächlichen Nutzer&apos;,
    CASE
        WHEN wta.itemType_id IN(0, 1)
            THEN wta.avgLearningDurationItem / 60
        ELSE 0
    END AS &apos;Durchschnittliche Gesamtbearbeitungszeit pro Benutzer (min)&apos;,
    CASE
        WHEN wta.itemType_id IN(0, 1)
            THEN wta.totalLearningDurationItem / 60
        ELSE 0
    END AS &apos;Gesamtbearbeitungszeit des Bausteins (min)&apos;,
    wta.totalExecutionsItem AS &apos;Gesamtzahl Aufrufe&apos;,
    ISNULL(wta.greenStatuses, 0.0) AS &apos;Bearbeitungsstatus (grün) tatsächliche Nutzer&apos;,
    ISNULL(wta.yellowStatuses, 0.0) AS &apos;Bearbeitungsstatus (gelb) tatsächliche Nutzer&apos;,
    ISNULL(wta.redStatuses, 0.0) AS &apos;Bearbeitungsstatus (rot) tatsächliche Nutzer&apos;,

    tt.timeLimit / 60 as &apos;Test Maximale Zeit (in Minuten)&apos;,
    tt.maximumExecutions as &apos;Test Maximale Zahl der Bearbeitungen&apos;,
    IIF(tt.checkLRbeforeExecution = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Abarbeitung der Lernwegempfehlungen vor neuem Testaufruf&apos;,
    IIF(tt.resetScormData = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Lernstand zurücksetzen nach Testsperrung&apos;,
    IIF(tt.considerLearningTargets = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Lernzielgewichtung&apos;,
    IIF(tt.considerExcludingQuestions = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Ausschlussfragen&apos;,
    IIF(tt.frozen = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test eingefroren&apos;,
    IIF(tt.generateLearnwayRecommendations = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Lernwegsempfehlungen&apos;,
    IIF(tt.saveStatisticalInformations = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Speichere Bearbeitungsdetails&apos;,
    IIF(tt.printerOnly = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test nur Testausdruck&apos;,
    IIF(tt.isTemplate = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Vorlage&apos;,
    CASE tt.mixAnswerPartOrder
        WHEN 0 THEN &apos;Test Reihenfolge der Fragen und der Antwortmöglichkeiten variieren&apos;
        WHEN 1 THEN &apos;Test Fragenreihenfolge manuell festlegen&apos;
        ELSE &apos;&apos;
    END as &apos;Test Fragenreihenfolge&apos;,
    IIF(tt.showResults = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Testergebnis nach Ende des Tests dem Benutzer zeigen&apos;,
    IIF(tt.showRevision = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Korrekturansicht erlauben&apos;,
    IIF(tt.enableResultPrinting = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Ausdruck des Testergebnisses&apos;,
    CASE tt.printResultDetails
        WHEN 0 THEN &apos;keine&apos;
        WHEN 1 THEN &apos;Bildungscontrolling und Lernersicht&apos;
        WHEN 2 THEN &apos;nur Bildungscontrolling&apos;
        ELSE &apos;&apos;
    END AS &apos;Test Detaillierte Ergebnisse ausdrucken&apos;,
    IIF(tt.showWrongQuestions = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test falsche Antworten anzeigen&apos;,
    tt.columnsPerPrintPage as &apos;Test Anzahl der Spalten pro Seite im Ausdruck&apos;,
    tt_pl_r.Text as &apos;Test Fußzeile links&apos;,
    tt_pr_r.Text as &apos;Test Fußzeile rechts&apos;,
    IIF(tt.certificatePageNumbers = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Seitennummerierung&apos;,
    IIF(tt.useStandardStartPage = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Standard-Startseite&apos;,
    IIF(tt.useStandardResultPage = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Standard-Ergebnisseite&apos;,
    CASE theme.player_id
        WHEN &apos;defaultPlayer&apos; THEN &apos;Standard Player v4.0&apos;
        WHEN &apos;asycnPlayer&apos; THEN &apos;WBT Player v3.0 (async)&apos;
        WHEN &apos;deprecatedPlayer&apos; THEN &apos;WBT Player v2.0 (bis 12.2020)&apos;
        ELSE &apos;&apos;
    END AS &apos;WBT Kursviewer&apos;,
    theme.themeWidth as &apos;WBT Bildschirm Breite beim Start&apos;,
    theme.themeHeight as &apos;WBT Bildschirm Höhe beim Start&apos;,
    IIF(theme.themeViewerOptions &amp; 64 = 64, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Wiederholungsliste&apos;,
    IIF(theme.themeViewerOptions &amp; 8 = 8, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Zurück&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 1 = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Baum Anzeigen/Verbergen&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 16 = 16, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Vorwärts&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 2 = 2, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Werkzeuge&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 1024 = 1024, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Vorhergehender Schritt&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 4 = 4, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Lesezeichen&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 32 = 32, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Nächster Schritt&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 256 = 256, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Minimieren/Maximieren&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 512 = 512, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Schließen&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 4096 = 4096, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Baum zu Beginn offen&apos;,
    IIF(theme.themeViewerOptions &amp; 16384 = 16384, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Erneut Laden&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 2048 = 2048, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Lautsprecher ein/aus&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 8192 = 8192, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Sprechertexte ein/aus&apos;,
    IIF(theme.themeViewerOptions &amp; 32768 = 32768, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Automatische Lesezeichen&apos;,
    IIF(theme.themeViewerOptions &amp; 65536 = 65536, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Lernwegsempfehlungen aus SCORM-Daten&apos;,
    IIF(theme.themeViewerOptions &amp; 128 = 128, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Pause&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 131072 = 131072, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Hilfe&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 524288 = 524288, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Player unterdrückt API-Fehler&apos;
FROM
    #TGItemChain ic

    -- Edu Offer related tables
    LEFT JOIN tblItems eo_i
        ON  eo_i.id = ic.eduOfferId
    LEFT JOIN tblEduOffers eo
        ON  eo.id = ic.eduOfferId
    LEFT JOIN #RightMapping eo_grm
        ON  eo_grm.id = eo_i.right_global
    LEFT JOIN #AvailabilityMapping eo_am
        ON  eo_am.isAvailable = eo_i.isAvailableForEduCatalog
        AND eo_am.isRestricted = eo_i.isRestrictedByTargetGroup
    LEFT JOIN tblContacts eo_c
        ON  eo_i.contact_id = eo_c.id

    -- Module related tables
    LEFT JOIN tblItems m_i
        ON  m_i.id = ic.moduleId
    LEFT JOIN tblModules m
        ON  m.id = ic.moduleId
    LEFT JOIN #RightMapping m_grm
        ON  m_grm.id = m_i.right_global
    LEFT JOIN #LearningTypeMapping m_ltm
        ON  m_ltm.id = m_i.learningType_id
    LEFT JOIN tblCertificates as m_cert
        ON  m_cert.id = m_i.certificate_id
    LEFT JOIN #AvailabilityMapping m_am
        ON  m_am.isAvailable = m_i.isAvailableForEduCatalog
        AND m_am.isRestricted = m_i.isRestrictedByTargetGroup
    LEFT JOIN tblContacts m_c
        ON  m_c.id = m_i.contact_id
    LEFT JOIN #LearningContentMapping m_lcm
        ON  m_lcm.code = m_i.learningContent COLLATE database_default

    -- Item related tables
    JOIN tblItems i
        ON  i.id = ic.itemId
    JOIN #ItemMapping AS im
        ON  im.id = ic.itemTypeId
    JOIN #RightMapping i_grm
        ON  i_grm.id = i.right_global
    LEFT JOIN #LearningTypeMapping i_ltm
        ON  i_ltm.id = i.learningType_id
    LEFT JOIN tblCertificates as i_cert
        ON  i_cert.id = i.certificate_id
    JOIN #AvailabilityMapping i_am
        ON  i_am.isAvailable = i.isAvailableForEduCatalog
        AND i_am.isRestricted = i.isRestrictedByTargetGroup
    LEFT JOIN tblContacts i_c
        ON  i_c.id = i.contact_id
    LEFT JOIN #LearningContentMapping i_lcm
        ON  i_lcm.code = i.learningContent COLLATE database_default

    LEFT JOIN tblTasTests tt
        ON  tt.id = i.id
    LEFT JOIN #TestModeMapping tt_tm
        ON  tt_tm.id = tt.mode
    LEFT JOIN tblDocuments doc
        ON  doc.id = i.id
    LEFT JOIN tblThemes theme
        ON  theme.id = i.id
    LEFT JOIN #TargetDeviceMapping theme_td
        ON  theme_td.id = theme.targetDevice
    LEFT JOIN #LanguageMapping tt_lm
        ON  tt_lm.id = tt.navigationLanguageId
    LEFT JOIN tblResources tt_pl_r
        ON  tt_pl_r.id = tt.certificateFooterLeft_resource_id
        AND tt_pl_r.Language_ID = 1031
    LEFT JOIN tblResources tt_pr_r
        ON  tt_pr_r.id = tt.certificateFooterRight_resource_id
        AND tt_pr_r.Language_ID = 1031

    LEFT JOIN #WbtTestAggregates wta
        ON  wta.item_id = ic.itemId
ORDER BY
    eo_i.title, m_i.title, i.title

-- ---------------------------------------------------------------
-- Now the result set for the unassigned items
-- ---------------------------------------------------------------
IF OBJECT_ID(&apos;tempdb..#Unassigned&apos;) IS NOT NULL
    DROP TABLE #Unassigned;

CREATE TABLE #Unassigned
(
    itemId UNIQUEIDENTIFIER NULL,
    itemTypeId INT NULL,
    moduleId UNIQUEIDENTIFIER NULL,
    eduOfferId UNIQUEIDENTIFIER NULL
)

-- Add items where there is no chain (and not assigned?)
INSERT INTO
    #Unassigned
SELECT DISTINCT
    i_i.item_id,
    i_i.itemType_id,
    mi.module_id,
    NULL
FROM
    v_Items i_i
    LEFT JOIN tblModuleItems mi
        ON mi.item_id = i_i.item_id
WHERE
    i_i.mandator_id = @current_mandator_id
    AND i_i.itemType_id &lt; 1000
    -- No full chain
    AND NOT EXISTS
    (
        SELECT
            *
        FROM
            tblEduOffersModules eom
            JOIN v_items eo_i
                ON  eo_i.item_id = eom.eduOffer_id
            JOIN tblModuleItems mi
                ON  mi.module_id = eom.module_id
            JOIN v_items m_i
                ON  m_i.item_id = mi.module_id
        WHERE
            mi.item_id = i_i.item_id
    )

-- Add modules where there is no Edu Offer or item relationship.
INSERT INTO
    #Unassigned
SELECT DISTINCT
    NULL,
    NULL,
    m.id,
    eom.eduOffer_id
FROM
    tblModules m
    -- Filter out deleted modules
    JOIN v_Items m_i
        ON  m_i.item_id = m.id
    LEFT JOIN tblEduOffersModules eom
        ON  eom.module_id = m.id
WHERE
    m.mandator_id = @current_mandator_id
    AND
    (
         -- No Edu offer assignment
        eom.eduOffer_id IS NULL
        -- No items
        OR NOT EXISTS
        (
            SELECT
                *
            FROM
                tblModuleItems mi
            WHERE
                mi.module_id = m.id
        )
    )

-- Add Edu Offers where there is no full chain
INSERT INTO
    #Unassigned
SELECT DISTINCT
    NULL,
    NULL,
    NULL,
    eo.id
FROM
    tblEduOffers eo
    -- Filter out deleted modules
    JOIN v_Items eo_i
        ON  eo_i.item_id = eo.id
WHERE
    eo.mandator_id = @current_mandator_id
     -- No full chain
    AND NOT EXISTS
    (
        SELECT
            *
        FROM
            tblEduOffersModules eom
            JOIN tblModuleItems mi
                ON  mi.module_id = eom.module_id
            JOIN v_items m_i
                ON  m_i.item_id = eom.module_id
            JOIN v_items i_i
                ON  i_i.item_id = mi.item_id
        WHERE
            eom.eduOffer_id = eo.id
    )

TRUNCATE TABLE #DistinctItems;

INSERT INTO
    #DistinctItems(itemId, itemTypeId)
SELECT DISTINCT
    itemId,
    itemTypeId
FROM
    #Unassigned
WHERE
    itemId IS NOT NULL

-- Aggregate user information for WBTs and Tests
TRUNCATE TABLE #WbtTestAggregates;

;WITH PotentialItems
(
    item_id,
    itemType_id
)
AS
(
    SELECT
        itemId AS item_id,
        itemTypeId AS itemType_id
    FROM
        #DistinctItems
    WHERE
        itemTypeId IN(0, 1)
)
INSERT INTO
    #WbtTestAggregates
SELECT
    item_id,
    itemType_id,
    (
        SELECT
            COUNT(*)
        FROM
            #users
    ),
    0,
    0,
    0,
    0,
    0,
    0,
    0
FROM
    PotentialItems;

-- getting the green statuses for those items and users
-- getting the yellow statuses for those items and users
-- getting the red statuses for those items and users
UPDATE
    #WbtTestAggregates
SET
    usersExecutedItem = calc.usersCount,
    greenStatuses = calc.greenStatus,
    yellowStatuses = calc.yellowStatus,
    redStatuses = calc.redStatus
FROM
    #WbtTestAggregates
    JOIN
    (
        -- for each user of the targetgroups we have to detect the items MAX status for calculation
        SELECT
            item_id,
            COUNT(*) usersCount,
            SUM
            (
                CASE
                    WHEN itemStatus = 4 THEN 1
                    ELSE 0
                END
            ) AS greenStatus,
            --needed because the MAX logic wouldn&apos;t work else
            SUM
            (
                CASE
                    WHEN itemStatus = 1 THEN 1
                    ELSE 0
                END
            ) AS yellowStatus,
            SUM
            (
                CASE
                    WHEN itemStatus = 3 THEN 1
                    ELSE 0
                END
            ) AS redStatus
        FROM
        (
            -- we have to calculate the max status for the user
            SELECT
                MAX
                (
                    CASE
                        WHEN status = 2 THEN 4
                        ELSE status
                    END
                ) AS itemStatus,
                suih.item_id
            FROM
                tblStatusUserItemHistory AS suih
                JOIN #Users AS users
                    ON users.user_id = suih.user_id
                JOIN #WbtTestAggregates AS items
                    ON items.item_id = suih.item_id
            --WHERE
            --    suih.startDate BETWEEN @dateRange_start AND @dateRange_end
            GROUP BY
                suih.user_id,
                suih.item_id
        ) AS innerQuery
        GROUP BY
            item_id
    ) AS calc
        ON calc.item_id = #WbtTestAggregates.item_id;

UPDATE
    #WbtTestAggregates
SET
    -- getting total calls of the WBTs
    totalExecutionsItem = ISNULL(wbtAggregates.totalExecutionsItem, 0),
    -- getting total learning duration for the WBTs
    totalLearningDurationItem = ISNULL(wbtAggregates.totalLearningDurationItem, 0),
    -- getting avg learning duration for the WBT and user
    avgLearningDurationItem = ISNULL(wbtAggregates.avgLearningDurationItem, 0)
FROM
    (
        SELECT
            theme_id,
            COUNT(*) as totalExecutionsItem,
            SUM(tblStatsThemeSessions.durationSeconds) AS totalLearningDurationItem,
            AVG(tblStatsThemeSessions.durationSeconds) AS avgLearningDurationItem
        FROM
            tblStatsThemeSessions
            JOIN #Users
                ON #Users.user_id = tblStatsThemeSessions.user_id
                --AND tblStatsThemeSessions.startTime BETWEEN @dateRange_start AND @dateRange_end
        GROUP BY
            theme_id
    ) AS wbtAggregates
WHERE
    #WbtTestAggregates.itemType_id = 1
    AND wbtAggregates.theme_id = #WbtTestAggregates.item_id

-- getting total calls of the Tests
UPDATE
    #WbtTestAggregates
SET
    totalExecutionsItem = ISNULL(testAggregates.totalCount, 0),
    totalLearningDurationItem = ISNULL(testAggregates.totalLearnTime, 0),
    avgLearningDurationItem = ISNULL(testAggregates.avgLearnDuration, 0)
FROM
    (
        SELECT
            test_id,
            COUNT(*) as totalCount,
            SUM(DATEDIFF(MINUTE, startdate, enddate)) as totalLearnTime,
            AVG(DATEDIFF(MINUTE, startdate, endDate)) as avgLearnDuration

        FROM
            tblTasTestSessions
            JOIN #Users
                ON #users.user_id = tblTasTestSessions.user_id
                -- AND tblTasTestSessions.endDate BETWEEN @dateRange_start AND @dateRange_end
        GROUP BY
            test_id
    ) AS testAggregates
WHERE
    #WbtTestAggregates.itemType_id = 0
    AND testAggregates.test_id = #WbtTestAggregates.item_id


TRUNCATE TABLE #UnfilteredItemChain;
INSERT INTO
    #UnfilteredItemChain
    (
        item_id,
        module_id,
        moduleTitle,
        eduOffer_id,
        eduOfferTitle,
        targetGroup_id,
        targetGroupTitle
    )
SELECT
    itemId,
    mi.module_id,
    LTRIM(RTRIM(m_i.title)),
    eom.eduOffer_id,
    LTRIM(RTRIM(eo_i.title)),
    eot.targetGroup_id,
    LTRIM(RTRIM(tg.title))
FROM
    #DistinctItems i
    JOIN tblModuleItems mi
        ON  mi.item_id = i.itemId
    JOIN tblItems m_i
        ON  m_i.id = mi.module_id
        AND m_i.deleted IS NULL
    LEFT JOIN tblEduOffersModules eom
        ON  eom.module_id = mi.module_id
    LEFT JOIN tblItems eo_i
        ON  eo_i.id = eom.eduOffer_id
        AND eo_i.deleted IS NULL
    LEFT JOIN tblEduOffersTargetGroups eot
        ON  eot.eduOffer_id = eom.eduOffer_id
    LEFT JOIN tblTargetGroups tg
        ON  tg.id = eot.targetGroup_id


-- Output
SELECT
    -- Edu Offer
    -- eo_i.id as &apos;Bildungsangebot ID&apos;,
    eo_i.Title as &apos;Bildungsangebot Titel&apos;,
    eo_i.TitleForLearners as &apos;Bildungsangebot Titel für Lerner&apos;,
    dbo.fn_StripHTML(eo_i.[description]) as &apos;Bildungsangebot Beschreibung&apos;,
    eo_i.trainerinfo as &apos;Bildungsangebot Trainerinfo&apos;,
    eo_i.tag as &apos;Bildungsangebot Kennzeichen&apos;,
    eo_i.tag2 as &apos;Bildungsangebot ED-SAP Schnittstelle&apos;,
    eo_i.contentOwner as &apos;Bildungsangebot Content-Owner&apos;,
    eo_i.infoUrl as &apos;Bildungsangebot Video-URL&apos;,
        CASE eo_i.isInfoLinkGenerated
        WHEN 1 THEN @InfoLinkUrlRoot + dbo.fn_UrlEncode(eo_i.tag)
        ELSE &apos;&apos;
    END as &apos;Bildungsangebot Link zur Info-Seite&apos;,
    IIF(eo.isMandatory &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Bildungsangebot Verpflichtend&apos;,
    eo_grm.Title as &apos;Bildungsangebot Berechtigung Global&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title)) + &apos; &apos; + CAST(rm.title AS VARCHAR)
                    FROM
                        tblOrganisationUnits ou
                        JOIN tblItemsOUPermissions eo_oup
                            ON  eo_oup.organisationUnit_id = ou.id
                        JOIN #RightMapping rm
                            ON  rm.id = eo_oup.permission
                    WHERE
                        eo_oup.item_id = eo.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot Berechtigung OE&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = eo_i.owner_id) as &apos;Bildungsangebot Besitzer&apos;,
    (SELECT MAX(mainVersionCreated) FROM tblVersionMap where id = eo_i.id) as &apos;Bildungsangebot Zuletzt geändert am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = eo_i.modifiedBy_user_id) as &apos;Bildungsangebot Zuletzt geändert von&apos;,
    eo_i.created as &apos;Bildungsangebot Erstellt am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = eo_i.createdBy_user_id) as &apos;Bildungsangebot Ersteller&apos;,
    IIF(eo_i.isAvailableForEduCatalog = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Bildungsangebot für den Bildungskatalog verfügbar&apos;,
    eo_am.title as &apos;Bildungsangebot verfügbar für&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title))
                    FROM
                        tblOrganisationUnits ou
                        JOIN [dbo].[tblItemAvailableForOrgUnitsEduCatalog] eo_ouec
                            ON  eo_ouec.orgUnit_id = ou.id
                    WHERE
                        eo_ouec.item_id = eo.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot Verfügbar für OE&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblItemAvailableForEduCatalog] eo_tgec
                            ON  eo_tgec.targetGroup_id = tg.id
                    WHERE
                        eo_tgec.item_id = eo.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot Verfügbar für ZG&apos;,
    eo_c.name as &apos;Bildungsangebot Ansprechpartner Name&apos;,
    IIF(eo_i.isPermissionRequired = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Bildungsangebot Genehmigung erforderlich&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblEduOffersTargetGroups] eotg
                            ON  eotg.targetGroup_id = tg.id
                    WHERE
                        eotg.eduOffer_id = eo.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete ZG&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + RTRIM(LTRIM(m_i_i.title))
                FROM
                    tblItems m_i_i
                    JOIN [dbo].[tblEduOffersModules] eom
                        ON  eom.module_id = m_i_i.id
                WHERE
                    eom.eduOffer_id = eo.id
                ORDER BY
                    m_i_i.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete Module&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + ta_mk_r.[Text]
                FROM
                    tblTopicAreas ta_mk
                    JOIN tblTopicAreasCurriculumEduOffers taceo
                        ON  taceo.topicArea_id = ta_mk.id
                    JOIN tblResources ta_mk_r
                        ON  ta_mk_r.id = ta_mk.localizedTitle_id
                        AND ta_mk_r.Language_ID = 1031
                WHERE
                    taceo.eduOffer_id = eo.id
                ORDER BY
                    ta_mk_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete Themenbereiche (Meine Kurse)&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + eo_ta_bk_r.[Text]
                FROM
                    [tblTopicAreasItems] eo_tai
                    JOIN tblTopicAreas eo_ta_bk
                        ON  eo_ta_bk.id = eo_tai.topicArea_id
                    JOIN tblResources eo_ta_bk_r
                        ON  eo_ta_bk_r.id = eo_ta_bk.localizedTitle_id
                        AND eo_ta_bk_r.Language_ID = 1031
                WHERE
                    eo_tai.item_id = eo.id
                ORDER BY
                    eo_ta_bk_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Bildungsangebot zugeordnete Themenbereiche (Bildungskatalog)&apos;,

    -- Module
    --m_i.id as &apos;Modul ID&apos;,
    m_i.Title as &apos;Modul Titel&apos;,
    m_i.TitleForLearners as &apos;Modul Titel für Lerner&apos;,
    dbo.fn_StripHTML(m_i.[description]) as &apos;Modul Beschreibung&apos;,
    m_i.trainerinfo as &apos;Modul Trainerinfo&apos;,
    m_i.tag as &apos;Modul Kennzeichen&apos;,
    m_i.tag2 as &apos;Modul ED-SAP Schnittstelle&apos;,
    m_i.contentOwner as &apos;Modul Content-Owner&apos;,
    m_i.infoUrl as &apos;Modul Video-URL&apos;,
        CASE m_i.isInfoLinkGenerated
        WHEN 1 THEN @InfoLinkUrlRoot + dbo.fn_UrlEncode(eo_i.tag)
        ELSE &apos;&apos;
    END as &apos;Modul Link zur Info-Seite&apos;,
    IIF(m_i.isVisibleInEducationCard = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Modul Im Bildungspass anzeigen&apos;,
    CASE m.viewMode
        WHEN 2 THEN &apos;Lernpfad&apos;
        WHEN 1 THEN &apos;Gruppierung&apos;
        WHEN 0 THEN &apos;Standard&apos;
    END as &apos;Modulansicht&apos;,
    m.[target] as &apos;Modul Lernziele&apos;,
    m.participants as &apos;Modul Teilnehmer&apos;,
    m.courseUnits as &apos;Modul Unterrichtseinheiten&apos;,
    m.trainers as &apos;Modul Referenten&apos;,
    IIF(m.isCurriculum = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Curriculum&apos;,
    m_grm.Title as &apos;Modul Berechtigung Global&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title)) + &apos; &apos; + CAST(rm.title AS VARCHAR)
                    FROM
                        tblOrganisationUnits ou
                        JOIN tblItemsOUPermissions oup
                            ON  oup.organisationUnit_id = ou.id
                        JOIN #RightMapping rm
                            ON  rm.id = oup.permission
                    WHERE
                        oup.item_id = m.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
                    0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Berechtigung OE&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = m_i.owner_id) as &apos;Modul Besitzer&apos;,
    (SELECT MAX(mainVersionCreated) FROM tblVersionMap where id = m_i.id) as &apos;Modul zuletzt geändert am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = m_i.modifiedBy_user_id) as &apos;Modul zuletzt geändert von&apos;,
    m_i.created as &apos;Modul erstellt am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = m_i.createdBy_user_id) as &apos;Modul Ersteller&apos;,
    CASE m.timeRestrictionType
        WHEN 2 THEN &apos;relative Termine&apos;
        WHEN 1 THEN &apos;feste Termine&apos;
        WHEN 0 THEN &apos;unbegrenzt&apos;
    END as &apos;Modul zeitliche Verfügbarkeit&apos;,
    CASE m.timeRestrictionType
        WHEN 2 THEN CAST(m.availableFromWeeks AS VARCHAR(2))
        WHEN 1 THEN CONVERT(VARCHAR(50), m.availableFrom, 121)
        ELSE &apos;&apos;
    END AS &apos;Modul verfügbar von&apos;,
    CASE m.timeRestrictionType
        WHEN 2 THEN CAST(m.availableToWeeks AS VARCHAR(2))
        WHEN 1 THEN CONVERT(VARCHAR(50), m.availableTo, 121)
        ELSE &apos;&apos;
    END AS &apos;Modul verfügbar bis&apos;,
    IIF(m.notificationEnabled = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Benachrichtigung zum Lernstand an den Lerner versenden&apos;,
    m.notificationStartWeeks as &apos;Modul Benachrichtigung Start&apos;,
    m.repeatNotificationInWeeks as &apos;Modul Benachrichtigung Versandhäufigkeit&apos;,
    m.notificationEndWeeks as &apos;Modul Benachrichtigung Ende&apos;,
    CASE m.scoringMode
        WHEN 2 THEN &apos;Summe der Bausteine&apos;
        WHEN 1 THEN &apos;Individuelle Vergabe&apos;
        WHEN 0 THEN &apos;Keine Bildungszeit für Modul&apos;
    END AS &apos;Vergabe Bildungszeit auf Modulebene&apos;,
    dbo.fn_GetEducationTimeString(m_i.educationTime) AS &apos;Modul Erwerbbare Bildungszeit&apos;,
    IIF(m.addItemScoreToModuleScore = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Bildungszeiten für Bausteine zählen zusätzlich zu den Bildungszeiten für Module&apos;,
    m_ltm.title as &apos;Modul Lernform&apos;,
    m_lcm.learningContent as &apos;Modul Lerninhalt&apos;,
    CASE
        WHEN m_i.requalificationPeriodType = 2
            THEN &apos;festes Intervall &apos; + CAST(m_i.newCreditPointsSpanMonths AS VARCHAR(3)) + &apos; Monaten&apos;
        WHEN m_i.requalificationPeriodType = 1
            THEN &apos;jährlich&apos;
        ELSE &apos;keine&apos;
    END AS &apos;Modul Zeitraum Re-Qualifizierung&apos;,
    ISNULL(m_cert.name, &apos;Kein Zertifikat zugeordnet&apos;) as &apos;Modul Zertifikat&apos;,
    ISNULL(CAST(m_i.overridespanmonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Zeitraum Re-Zertifizierung&apos;,
    ISNULL(CAST(m_i.overrideInitialMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Erst-Bearbeitung Re-Zertifizierung&apos;,
    ISNULL(CAST(m_i.overrideAlertSpanMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Erste Erinnerung Re-Zertifizierung&apos;,
    ISNULL(CAST(m_i.override2ndAlertSpanWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Zweite Erinnerung Re-Zertifizierung&apos;,
    IIF(m_i.isRateable = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Modul bewertbar&apos;,
    IIF(m_i.showRatingFromOthers = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Modul Bewertung von anderen Usern einsehbar&apos;,
    IIF(m_i.ratingReminderWeeks &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Erinnerung Bewertung&apos;,
    ISNULL(CAST(m_i.ratingReminderWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Modul Zeitraum Erinnerung&apos;,
    IIF(m_i.isAvailableForEduCatalog &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Für den Bildungskatalog verfügbar?&apos;,
    m_am.title as &apos;Modul verfügbar für&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title))
                    FROM
                        tblOrganisationUnits ou
                        JOIN [dbo].[tblItemAvailableForOrgUnitsEduCatalog] m_ouec
                            ON  m_ouec.orgUnit_id = ou.id
                    WHERE
                        m_ouec.item_id = m.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Verfügbar für OE&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblItemAvailableForEduCatalog] m_tgec
                            ON  m_tgec.targetGroup_id = tg.id
                    WHERE
                        m_tgec.item_id = m.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Verfügbar für ZG&apos;,
    m_c.name as &apos;Modul Ansprechpartner Name&apos;,
    IIF(m_i.isPermissionRequired = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Modul Genehmigung erforderlich&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(mi_i.title))
                    FROM
                        tblItems mi_i
                        JOIN [dbo].[tblModuleItems] mi
                            ON  mi.item_id = mi_i.id
                    WHERE
                        mi.module_id = m.id
                    ORDER BY
                        mi_i.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul Zugewiesene Bausteine&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT DISTINCT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN tblEduOffersTargetGroups eotg
                            ON  eotg.targetGroup_id = tg.id
                        JOIN tblEduOffersModules eom
                            ON  eom.eduOffer_id = eotg.eduOffer_id
                    WHERE
                        eom.module_id = m.id
                    ORDER BY
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Modul zugeordnete ZG&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT DISTINCT
                    &apos;, &apos; + meo_i.title
                FROM
                    tblEduOffersModules eom
                    JOIN tblItems meo_i
                        ON  meo_i.id = eom.eduOffer_id
                WHERE
                    eom.module_id = m.id
                ORDER BY
                    &apos;, &apos; + meo_i.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Modul Zugewiesene Bildungsangebote&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + RTRIM(LTRIM(o.title))
                FROM
                    tblObjects o
                    JOIN tblQualificationsItems qi
                        ON  qi.qualification_id = o.id
                WHERE
                    o.deleted IS NULL
                    AND qi.item_id = m.id
                ORDER BY
                    o.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Modul zugeordnete Qualifizierungen&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + ta_r.[Text]
                FROM
                    [tblTopicAreasItems] tai
                    JOIN tblTopicAreas ta
                        ON  ta.id = tai.topicArea_id
                    JOIN tblResources ta_r
                        ON  ta_r.id = ta.localizedTitle_id
                        AND ta_r.Language_ID = 1031
                WHERE
                    tai.item_id = m.id
                ORDER BY
                    ta_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Modul zugeordnete Themenbereiche (Bildungskatalog)&apos;,

    -- Item
    --i.id AS &apos;Baustein ID&apos;,
    i.title AS &apos;Baustein Titel&apos;,
    i.TitleForLearners as &apos;Baustein Titel für Lerner&apos;,
    im.title AS &apos;Bausteintyp&apos;,
    tt_tm.title AS &apos;Testart&apos;,
    dbo.fn_StripHTML(i.[description]) AS &apos;Baustein Beschreibung&apos;,
    i.trainerinfo as &apos;Baustein Trainerinfo&apos;,
    i.tag as &apos;Baustein Kennzeichen&apos;,
    i.tag2 as &apos;Baustein ED-SAP Schnittstelle&apos;,
    i.contentOwner as &apos;Baustein Content-Owner&apos;,
    i.infoUrl as &apos;Baustein Video-URL&apos;,
        CASE i.isLinkGenerated
        WHEN 1 THEN @DirektLinkUrlRoot + dbo.fn_UrlEncode(i.tag)
        ELSE &apos;&apos;
    END as &apos;Baustein Direkt Link&apos;,
    CASE i.isInfoLinkGenerated
        WHEN 1 THEN @InfoLinkUrlRoot + dbo.fn_UrlEncode(i.tag)
        ELSE &apos;&apos;
    END as &apos;Baustein Link zur Info-Seite&apos;,
    IIF(i.isVisibleInEducationCard = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Baustein Im Bildungspass anzeigen&apos;,
    IIF(i.deleteAfterYears IS NOT NULL, IIF(i.deleteAfterYears = 1, CAST(i.deleteAfterYears as NVARCHAR(3)) + &apos; Jahr&apos;, CAST(i.deleteAfterYears as NVARCHAR(3)) + &apos; Jahre&apos;), &apos;&apos;)  AS &apos;Baustein Bearbeitungsstand löschen nach&apos;,
    CASE i.itemType_id
        WHEN 1 THEN theme.importPath
        WHEN 6 THEN doc.folderName
        ELSE &apos;&apos;
    END AS &apos;Baustein Import Ordner&apos;,
    theme.learningObjective as &apos;WBT Lernziele&apos;,
    -- This is actually just a label in the UI!  The standard label is &quot;Author&quot; but as ERGO has different role names this is what Author looks
    -- like for them.
    &apos;&apos; AS &apos;WBT Verantwortlicher für eine BM&apos;,
    theme.learningDuration as &apos;WBT Lerndauer&apos;,
    theme_td.title as &apos;WBT Zielgerät&apos;,
    theme.manifest_id as &apos;WBT Manifest ID&apos;,
    theme.themeVersion as &apos;WBT-Version&apos;,
    CASE tt.resultCalculationMode
        WHEN 0 THEN &apos;Gesamtergebnis&apos;
        WHEN 1 THEN &apos;Sachgebietsergebnis&apos;
        ELSE &apos;&apos;
    END AS &apos;Test Berechnung der Ergebnisse&apos;,
    tt.summaryPassingThreshold AS &apos;Test bestanden bei&apos;,
    tt.mainSubjectGroupThreshold AS &apos;Test Sachgebietsergebnis in einem mind.&apos;,
    tt.otherSubjectGroupsThreshold AS &apos;Test Sachgebietsergebnis in den anderen mind.&apos;,
    tt.useGrading AS &apos;Test Benotung&apos;,
    tt_lm.title AS &apos;Test Sprache für Navigation&apos;,
    i_grm.Title as &apos;Baustein Berechtigung Global&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title)) + &apos; &apos; + CAST(rm.title AS VARCHAR)
                    FROM
                        tblOrganisationUnits ou
                        JOIN tblItemsOUPermissions oup
                            ON  oup.organisationUnit_id = ou.id
                        JOIN #RightMapping rm
                            ON  rm.id = oup.permission
                    WHERE
                        oup.item_id = i.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),&apos;&apos;
    ) as &apos;Baustein Berechtigung OE&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = i.owner_id) as &apos;Baustein Besitzer&apos;,
    (SELECT MAX(mainVersionCreated) FROM tblVersionMap where id = i.id) as &apos;Baustein zuletzt geändert am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = i.modifiedBy_user_id) as &apos;Baustein zuletzt geändert von&apos;,
    i.created as &apos;Baustein erstellt am&apos;,
    (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = i.createdBy_user_id) as &apos;Baustein Ersteller&apos;,
    dbo.fn_GetEducationTimeString(i.educationTime) AS &apos;Baustein Erwerbbare Bildungszeit&apos;,
    i_ltm.title as &apos;Baustein Lernform&apos;,
    i_lcm.learningContent as &apos;Baustein Lerninhalt&apos;,
    CASE
        WHEN i.requalificationPeriodType = 2
            THEN &apos;festes Intervall &apos; + CAST(i.newCreditPointsSpanMonths AS VARCHAR(3)) + &apos; Monaten&apos;
        WHEN i.requalificationPeriodType = 1
            THEN &apos;jährlich&apos;
        ELSE &apos;keine&apos;
    END AS &apos;Baustein Zeitraum Re-Qualifizierung&apos;,
    ISNULL(i_cert.name, &apos;Kein Zertifikat zugeordnet&apos;) as &apos;Baustein Zertifikat&apos;,
    IIF(theme.calcStatusIncludeCompleted = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Lernprogramm muss vollständig bearbeitet sein&apos;,
    IIF(theme.calcStatusIncludeExams = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Test(s) muss bestanden sein&apos;,
    IIF(theme.calcStatusIncludeExercises = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT alle Übungen müssen richtig beantwortet sein&apos;,
    theme.keepScormDataDays AS &apos;WBT Anzahl Tage&apos;,
    IIF(theme.keepScormDataDays &gt; 0, &apos;Nein&apos;, &apos;Ja&apos;)&apos;WBT Lernstandsdaten nicht löschen&apos;,
    ISNULL(CAST(i.overridespanmonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Zeitraum Re-Zertifizierung&apos;,
    ISNULL(CAST(i.overrideInitialMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Erst-Bearbeitung Re-Zertifizierung&apos;,
    ISNULL(CAST(i.overrideAlertSpanMonths AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Erste Erinnerung Re-Zertifizierung&apos;,
    ISNULL(CAST(i.override2ndAlertSpanWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Zweite Erinnerung Re-Zertifizierung&apos;,
    theme.StatusThreshold as &apos;WBT Lernprogramm-Status Im Lernprozess ab (%)&apos;,
    IIF(i.isRateable = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Baustein bewertbar&apos;,
    IIF(i.showRatingFromOthers = 1, &apos;Ja&apos;, &apos;Nein&apos;) AS &apos;Baustein Bewertung von anderen Usern einsehbar&apos;,
    IIF(i.ratingReminderWeeks &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Baustein Erinnerung Bewertung&apos;,
    ISNULL(CAST(i.ratingReminderWeeks AS VARCHAR(5)), &apos;keine&apos;) as &apos;Baustein Zeitraum Erinnerung&apos;,
    IIF(i.isAvailableForEduCatalog &gt; 0, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Baustein Für den Bildungskatalog verfügbar?&apos;,
    i_am.title as &apos;Baustein verfügbar für&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(ou.title))
                    FROM
                        tblOrganisationUnits ou
                        JOIN [dbo].[tblItemAvailableForOrgUnitsEduCatalog] ouec
                            ON  ouec.orgUnit_id = ou.id
                    WHERE
                        ouec.item_id = i.id
                    ORDER BY
                        ou.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),&apos;&apos;
    ) as &apos;Baustein Verfügbar für OE&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT
                        &apos;, &apos; + RTRIM(LTRIM(tg.title))
                    FROM
                        tblTargetGroups tg
                        JOIN [dbo].[tblItemAvailableForEduCatalog] tgec
                            ON  tgec.targetGroup_id = tg.id
                    WHERE
                        tgec.item_id = i.id
                    ORDER BY
                        tg.title
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),&apos;&apos;
    ) as &apos;Baustein Verfügbar für ZG&apos;,
    i_c.name as &apos;Baustein Ansprechpartner Name&apos;,
    IIF(i.isPermissionRequired = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Baustein Genehmigung erforderlich&apos;,
    ISNULL
    (
        SUBSTRING
        (
            STUFF
            (
                (
                    SELECT DISTINCT
                        &apos;, &apos; + targetGroupTitle
                    FROM
                        #UnfilteredItemChain uic
                    WHERE
                        uic.item_id = i.id
                    ORDER BY
                        &apos;, &apos; + targetGroupTitle
                    FOR XML PATH(&apos;&apos;), TYPE
                ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
                1,
                2,
                &apos;&apos;
            ),
            0,
            32760
        ),
        &apos;&apos;
    ) as &apos;Baustein zugeordnete ZG&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT DISTINCT
                    &apos;, &apos; + eduOfferTitle
                FROM
                    #UnfilteredItemChain uic
                WHERE
                    uic.item_id = i.id
                ORDER BY
                    &apos;, &apos; + eduOfferTitle
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein Zugewiesene Bildungsangebote&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT DISTINCT
                    &apos;, &apos; + moduleTitle
                FROM
                    #UnfilteredItemChain uic
                WHERE
                    uic.item_id = i.id
                ORDER BY
                    &apos;, &apos; + moduleTitle
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein Zugewiesene Module&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + RTRIM(LTRIM(o.title))
                FROM
                    tblObjects o
                    JOIN tblQualificationsItems qi
                        ON  qi.qualification_id = o.id
                WHERE
                    o.deleted IS NULL
                    AND qi.item_id = i.id
                ORDER BY
                    o.title
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein zugeordnete Qualifizierungen&apos;,
    ISNULL
    (
        STUFF
        (
            (
                SELECT
                    &apos;, &apos; + ta_r.[Text]
                FROM
                    [tblTopicAreasItems] tai
                    JOIN tblTopicAreas ta
                        ON  ta.id = tai.topicArea_id
                    JOIN tblResources ta_r
                        ON  ta_r.id = ta.localizedTitle_id
                        AND ta_r.Language_ID = 1031
                WHERE
                    tai.item_id = i.id
                ORDER BY
                    ta_r.[Text]
                FOR XML PATH(&apos;&apos;), TYPE
            ).value(&apos;.&apos;,&apos;NVARCHAR(MAX)&apos;),
            1,
            2,
            &apos;&apos;
        ),
        &apos;&apos;
    ) as &apos;Baustein zugeordnete Themenbereiche (Bildungskatalog)&apos;,

    CASE i.itemType_id
        WHEN 1 THEN (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = theme.importedBy_user_id)
        WHEN 6 THEN (SELECT fullName FROM #UserFullname ufn WHERE ufn.user_id = doc.importedBy_user_id)
        ELSE &apos;&apos;
    END AS &apos;Wer hat es zuletzt importiert&apos;,
    CASE i.itemType_id
        WHEN 1 THEN theme.importedDate
        WHEN 6 THEN doc.importedDate
        ELSE &apos;&apos;
    END AS &apos;Wann zuletzt importiert&apos;,
    wta.totalUsers AS &apos;Anzahl User in Zielgruppe&apos;,
    wta.usersExecutedItem AS &apos;Anzahl der tatsächlichen Nutzer&apos;,
    CASE
        WHEN wta.itemType_id IN(0, 1)
            THEN wta.avgLearningDurationItem / 60
        ELSE 0
    END AS &apos;Durchschnittliche Gesamtbearbeitungszeit pro Benutzer (min)&apos;,
    CASE
        WHEN wta.itemType_id IN(0, 1)
            THEN wta.totalLearningDurationItem / 60
        ELSE 0
    END AS &apos;Gesamtbearbeitungszeit des Bausteins (min)&apos;,
    wta.totalExecutionsItem AS &apos;Gesamtzahl Aufrufe&apos;,
    ISNULL(wta.greenStatuses, 0.0) AS &apos;Bearbeitungsstatus (grün) tatsächliche Nutzer&apos;,
    ISNULL(wta.yellowStatuses, 0.0) AS &apos;Bearbeitungsstatus (gelb) tatsächliche Nutzer&apos;,
    ISNULL(wta.redStatuses, 0.0) AS &apos;Bearbeitungsstatus (rot) tatsächliche Nutzer&apos;,

    tt.timeLimit / 60 as &apos;Test Maximale Zeit (in Minuten)&apos;,
    tt.maximumExecutions as &apos;Test Maximale Zahl der Bearbeitungen&apos;,
    IIF(tt.checkLRbeforeExecution = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Abarbeitung der Lernwegempfehlungen vor neuem Testaufruf&apos;,
    IIF(tt.resetScormData = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Lernstand zurücksetzen nach Testsperrung&apos;,
    IIF(tt.considerLearningTargets = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Lernzielgewichtung&apos;,
    IIF(tt.considerExcludingQuestions = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Ausschlussfragen&apos;,
    IIF(tt.frozen = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test eingefroren&apos;,
    IIF(tt.generateLearnwayRecommendations = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Lernwegsempfehlungen&apos;,
    IIF(tt.saveStatisticalInformations = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Speichere Bearbeitungsdetails&apos;,
    IIF(tt.printerOnly = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test nur Testausdruck&apos;,
    IIF(tt.isTemplate = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Vorlage&apos;,
    CASE tt.mixAnswerPartOrder
        WHEN 0 THEN &apos;Test Reihenfolge der Fragen und der Antwortmöglichkeiten variieren&apos;
        WHEN 1 THEN &apos;Test Fragenreihenfolge manuell festlegen&apos;
        ELSE &apos;&apos;
    END as &apos;Test Fragenreihenfolge&apos;,
    IIF(tt.showResults = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Testergebnis nach Ende des Tests dem Benutzer zeigen&apos;,
    IIF(tt.showRevision = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Korrekturansicht erlauben&apos;,
    IIF(tt.enableResultPrinting = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Ausdruck des Testergebnisses&apos;,
    CASE tt.printResultDetails
        WHEN 0 THEN &apos;keine&apos;
        WHEN 1 THEN &apos;Bildungscontrolling und Lernersicht&apos;
        WHEN 2 THEN &apos;nur Bildungscontrolling&apos;
        ELSE &apos;&apos;
    END AS &apos;Test Detaillierte Ergebnisse ausdrucken&apos;,
    IIF(tt.showWrongQuestions = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test falsche Antworten anzeigen&apos;,
    tt.columnsPerPrintPage as &apos;Test Anzahl der Spalten pro Seite im Ausdruck&apos;,
    tt_pl_r.Text as &apos;Test Fußzeile links&apos;,
    tt_pr_r.Text as &apos;Test Fußzeile rechts&apos;,
    IIF(tt.certificatePageNumbers = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Seitennummerierung&apos;,
    IIF(tt.useStandardStartPage = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Standard-Startseite&apos;,
    IIF(tt.useStandardResultPage = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;Test Standard-Ergebnisseite&apos;,
    CASE theme.player_id
        WHEN &apos;defaultPlayer&apos; THEN &apos;Standard Player v4.0&apos;
        WHEN &apos;asycnPlayer&apos; THEN &apos;WBT Player v3.0 (async)&apos;
        WHEN &apos;deprecatedPlayer&apos; THEN &apos;WBT Player v2.0 (bis 12.2020)&apos;
        ELSE &apos;&apos;
    END AS &apos;WBT Kursviewer&apos;,
    theme.themeWidth as &apos;WBT Bildschirm Breite beim Start&apos;,
    theme.themeHeight as &apos;WBT Bildschirm Höhe beim Start&apos;,
    IIF(theme.themeViewerOptions &amp; 64 = 64, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Wiederholungsliste&apos;,
    IIF(theme.themeViewerOptions &amp; 8 = 8, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Zurück&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 1 = 1, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Baum Anzeigen/Verbergen&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 16 = 16, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Vorwärts&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 2 = 2, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Werkzeuge&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 1024 = 1024, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Vorhergehender Schritt&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 4 = 4, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Lesezeichen&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 32 = 32, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Nächster Schritt&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 256 = 256, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Minimieren/Maximieren&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 512 = 512, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Schließen&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 4096 = 4096, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Baum zu Beginn offen&apos;,
    IIF(theme.themeViewerOptions &amp; 16384 = 16384, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Erneut Laden&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 2048 = 2048, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Lautsprecher ein/aus&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 8192 = 8192, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Sprechertexte ein/aus&apos;,
    IIF(theme.themeViewerOptions &amp; 32768 = 32768, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Automatische Lesezeichen&apos;,
    IIF(theme.themeViewerOptions &amp; 65536 = 65536, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Lernwegsempfehlungen aus SCORM-Daten&apos;,
    IIF(theme.themeViewerOptions &amp; 128 = 128, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Pause&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 131072 = 131072, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Schaltfläche &quot;Hilfe&quot;&apos;,
    IIF(theme.themeViewerOptions &amp; 524288 = 524288, &apos;Ja&apos;, &apos;Nein&apos;) as &apos;WBT Player unterdrückt API-Fehler&apos;
FROM
    #Unassigned ic

    -- Edu Offer related tables
    LEFT JOIN tblItems eo_i
        ON  eo_i.id = ic.eduOfferId
    LEFT JOIN tblEduOffers eo
        ON  eo.id = ic.eduOfferId
    LEFT JOIN #RightMapping eo_grm
        ON  eo_grm.id = eo_i.right_global
    LEFT JOIN #AvailabilityMapping eo_am
        ON  eo_am.isAvailable = eo_i.isAvailableForEduCatalog
        AND eo_am.isRestricted = eo_i.isRestrictedByTargetGroup
    LEFT JOIN tblContacts eo_c
        ON  eo_i.contact_id = eo_c.id

    -- Module related tables
    LEFT JOIN tblItems m_i
        ON  m_i.id = ic.moduleId
    LEFT JOIN tblModules m
        ON  m.id = ic.moduleId
    LEFT JOIN #RightMapping m_grm
        ON  m_grm.id = m_i.right_global
    LEFT JOIN #LearningTypeMapping m_ltm
        ON  m_ltm.id = m_i.learningType_id
    LEFT JOIN tblCertificates as m_cert
        ON  m_cert.id = m_i.certificate_id
    LEFT JOIN #AvailabilityMapping m_am
        ON  m_am.isAvailable = m_i.isAvailableForEduCatalog
        AND m_am.isRestricted = m_i.isRestrictedByTargetGroup
    LEFT JOIN tblContacts m_c
        ON  m_c.id = m_i.contact_id
    LEFT JOIN #LearningContentMapping m_lcm
        ON  m_lcm.code = m_i.learningContent COLLATE database_default

    -- Item related tables
    LEFT JOIN tblItems i
        ON  i.id = ic.itemId
    LEFT JOIN #ItemMapping AS im
        ON  im.id = ic.itemTypeId
    LEFT JOIN #RightMapping i_grm
        ON  i_grm.id = i.right_global
    LEFT JOIN #LearningTypeMapping i_ltm
        ON  i_ltm.id = i.learningType_id
    LEFT JOIN tblCertificates as i_cert
        ON  i_cert.id = i.certificate_id
    LEFT JOIN #AvailabilityMapping i_am
        ON  i_am.isAvailable = i.isAvailableForEduCatalog
        AND i_am.isRestricted = i.isRestrictedByTargetGroup
    LEFT JOIN tblContacts i_c
        ON  i_c.id = i.contact_id
    LEFT JOIN #LearningContentMapping i_lcm
        ON  i_lcm.code = i.learningContent COLLATE database_default

    LEFT JOIN tblTasTests tt
        ON  tt.id = i.id
    LEFT JOIN #TestModeMapping tt_tm
        ON  tt_tm.id = tt.mode
    LEFT JOIN tblDocuments doc
        ON  doc.id = i.id
    LEFT JOIN tblThemes theme
        ON  theme.id = i.id
    LEFT JOIN #TargetDeviceMapping theme_td
        ON  theme_td.id = theme.targetDevice
    LEFT JOIN #LanguageMapping tt_lm
        ON  tt_lm.id = tt.navigationLanguageId
    LEFT JOIN tblResources tt_pl_r
        ON  tt_pl_r.id = tt.certificateFooterLeft_resource_id
        AND tt_pl_r.Language_ID = 1031
    LEFT JOIN tblResources tt_pr_r
        ON  tt_pr_r.id = tt.certificateFooterRight_resource_id
        AND tt_pr_r.Language_ID = 1031

    LEFT JOIN #WbtTestAggregates wta
        ON  wta.item_id = ic.itemId
ORDER BY
    eo_i.title, m_i.title, i.title</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="19308b6b-d4fd-43a8-b8fc-68ac4606cd34" isSystem="True" name="Einzelne Zielgruppe" reportParameterType_id="19b9487c-a81b-4fd3-b12e-7e9ffec4de4a" queryParameterName="@distinctTargetGroup_id" />
    <!--<Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isSystem="True" name="Zeitraum" reportParameterType_id="abff13be-91c3-4ee1-93a3-7292f8e013ba" queryParameterName="@dateRange" />-->
  </Parameters>
  <ParameterTypes>
    <ParameterType id="19b9487c-a81b-4fd3-b12e-7e9ffec4de4a" isSystem="True" name="Einzelne Zielgruppe" datatype="StringDDL" dataValueField="id" dataTextField="title">
      <query>SELECT id, title FROM tblTargetGroups where mandator_id = @current_mandator_id order by title</query>
    </ParameterType>
    <ParameterType id="abff13be-91c3-4ee1-93a3-7292f8e013ba" isSystem="True" name="DateRange" datatype="DateRange" dataValueField="" dataTextField="" />
  </ParameterTypes>
</ReportsExport>