Årlig återrapportering till OKQ8 (återbäring/medlemsbonus)

Uppdaterad

Se PBI: Product Backlog Item 7215: Underlag till OKQ8

Underlaget för 2026 tog jag ut och mejlade till OKQ8 2026-03-26 (samt en rättelse 2026-03-27).

Kontaktperson hos OKQ8: Anna.Leminger@okq8.se

---

DECLARE @contractpartStartdate DATE

DECLARE @contractpartEnddate DATE

DECLARE @readingdateStart DATE

DECLARE @readingdateEnd DATE

DECLARE @startdate1 DATE

DECLARE @startdate2 DATE

DECLARE @startdate3 DATE

DECLARE @enddate1 DATE

DECLARE @enddate2 DATE

DECLARE @enddate3 DATE

SET @contractpartStartdate = '2023-12-01' --låt stå

SET @contractpartEnddate = '2025-12-31' --flytta efter datumet för varje tremånadersperiod du tar ut

SET @readingdateStart = '2025-01-01' --startdatum för hela perioden du tar ut

SET @readingdateEnd = '2026-03-31' --slutdatum för hela perioden du tar ut

SET @startdate1 = '2025-12-01' --första månaden för aktuell flik

SET @startdate2 = '2026-01-01' --andra månaden för aktuell flik

SET @startdate3 = '2026-02-01' --tredje månaden för aktuell flik

SET @enddate1 = DATEADD(dd, -1, DATEADD(MM, 1, @startdate1))

SET @enddate2 = DATEADD(dd, -1, DATEADD(MM, 1, @startdate2))

SET @enddate3 = DATEADD(dd, -1, DATEADD(MM, 1, @startdate3))

SELECT 

    contractpart.CONTRACTNUM AS Kontraktsnummer,

    contract.CUSTACCOUNT AS Kundnummer,

    contract.ALTERNATIVECUSTOMERNUMBER AS Personnummer,

    contractpart.PRODUCTNUM AS Produktkod, 

    contractpart.CONTRACTPARTSTECHNICTXT1 AS Kampanjkod,

    contractpart.STARTDATE AS [Kontraktsdel startdatum], 

    contractpart.ENDDATE AS [Kontraktsdel slutdatum], 

    monthconsumtions.CONSUMPTION AS Förbrukning, 

    monthconsumtions.READINGDATE AS Avläsningsdatum, 

    monthconsumtions.REASONTOREADING AS Avläsningsorsak,

    monthconsumtions.QUANTITYCODEVALUE AS Mätfunktion,

    CASE 

        WHEN monthconsumtions.READINGDATE >= @startdate1 AND monthconsumtions.READINGDATE <= @enddate1 THEN 1 

        WHEN monthconsumtions.READINGDATE >= @startdate2 AND monthconsumtions.READINGDATE <= @enddate2 THEN 2 

        WHEN monthconsumtions.READINGDATE >= @startdate3 AND monthconsumtions.READINGDATE <= @enddate3 THEN 3 

        ELSE 0 

    END AS dateNumber

INTO #tmpResultTable2

FROM XLN_EXU_CONTRACTPARTTABLE AS contractpart 

INNER JOIN XLN_EXU_CONTRACTTABLE AS contract 

ON 

    contractpart.COMPANYID = contract.COMPANYID 

    AND contractpart.CONTRACTNUM = contract.CONTRACTNUM 

    AND contractpart.DELIVERYCATEGORY = contract.DELIVERYCATEGORY 

INNER JOIN XLN_EXU_READINGTABLEEXT AS monthconsumtions 

ON 

    contract.ATTACHMENTNUM = monthconsumtions.AGREEMENTNUM 

    AND contract.COMPANYID = monthconsumtions.COMPANYID 

    AND contract.DELIVERYCATEGORY = monthconsumtions.DELIVERYCATEGORY

WHERE

    contractpart.CONTRACTPARTSTECHNICTXT1 LIKE 'OKQ8konv%'

    AND contractpart.PRODUCTNUM LIKE '%fast%'

    AND contractpart.STARTDATE >= @contractpartStartdate

    AND contractpart.ENDDATE > @contractpartEnddate

    AND monthconsumtions.READINGDATE BETWEEN @readingdateStart AND @readingdateEnd

    AND (monthconsumtions.REASONTOREADING = '0' OR monthconsumtions.REASONTOREADING = '2')

ORDER BY contractpart.CONTRACTNUM, monthconsumtions.READINGDATE    

SELECT 

    Kontraktsnummer, 

    Kundnummer, 

    Personnummer, 

    Produktkod, 

    Kampanjkod, 

    [Kontraktsdel startdatum], 

    [Kontraktsdel slutdatum], 

    SUM(Förbrukning) AS Förbrukning,

    Mätfunktion, 

    dateNumber

INTO #tmpResultTable3

FROM #tmpResultTable2

GROUP BY Kontraktsnummer, Kundnummer, Personnummer, Produktkod, Kampanjkod, [Kontraktsdel startdatum], [Kontraktsdel slutdatum], Mätfunktion, dateNumber

SELECT DISTINCT

    t3.Kontraktsnummer, 

    t3.Kundnummer,

    t3.Personnummer,

    t3.Produktkod,

    t3.Kampanjkod,

    t3.[Kontraktsdel startdatum],

    t3.[Kontraktsdel slutdatum],

    t3.Förbrukning,

    t2.Avläsningsdatum,

    t3.Mätfunktion,

    t2.dateNumber

INTO #tmpResultTable4

FROM #tmpResultTable3 AS t3

LEFT JOIN #tmpResultTable2 AS t2

ON 

    t2.Kontraktsnummer = t3.Kontraktsnummer 

    AND t2.Kundnummer = t3.Kundnummer 

    AND t2.dateNumber = t3.dateNumber

WHERE t2.Avläsningsorsak = 2

SELECT 

    *,

    (

        SELECT TOP 1 tmp.Avläsningsdatum

        FROM #tmpResultTable4 AS tmp

        WHERE 

            x.dateNumber = tmp.dateNumber 

            AND x.Kontraktsnummer = tmp.Kontraktsnummer

            AND x.Kundnummer = tmp.Kundnummer

        ORDER BY tmp.dateNumber, tmp.Avläsningsdatum DESC

    ) AS Avläsningsdatum

INTO #tmpResultTable5

FROM

(

    SELECT DISTINCT 

        Kontraktsnummer, 

        Kundnummer, 

        Personnummer, 

        Produktkod, 

        Kampanjkod, 

        [Kontraktsdel startdatum], 

        [Kontraktsdel slutdatum], 

        Förbrukning, 

        Mätfunktion, 

        dateNumber

    FROM #tmpResultTable4

) AS x

SELECT 

    Kontraktsnummer, 

    Kundnummer, 

    Personnummer, 

    Produktkod, 

    Kampanjkod, 

    [Kontraktsdel startdatum], 

    [Kontraktsdel slutdatum], 

    [Datum Förbrukning 1], 

    SUM([Förbrukning 1]) AS [Förbrukning 1], 

    [Datum Förbrukning 2], 

    SUM([Förbrukning 2]) AS [Förbrukning 2], 

    [Datum Förbrukning 3], 

    SUM([Förbrukning 3]) AS [Förbrukning 3]

FROM

(

    SELECT     

        t1.Kontraktsnummer,     

        t1.Kundnummer,     

        t1.Personnummer,     

        t1.Produktkod,     

        t1.Kampanjkod,     

        t1.[Kontraktsdel startdatum],     

        t1.[Kontraktsdel slutdatum],

        t1.Avläsningsdatum AS [Datum Förbrukning 1],    

        t1.Förbrukning AS [Förbrukning 1],    

        t2.Avläsningsdatum AS [Datum Förbrukning 2],    

        t2.Förbrukning AS [Förbrukning 2],     

        t3.Avläsningsdatum AS [Datum Förbrukning 3],    

        t3.Förbrukning AS [Förbrukning 3]     

    FROM #tmpResultTable5 as t1

    LEFT JOIN #tmpResultTable5 AS t2 ON t1.Kontraktsnummer = t2.Kontraktsnummer

    LEFT JOIN #tmpResultTable5 AS t3 ON t1.Kontraktsnummer = t3.Kontraktsnummer

    WHERE         

        t1.dateNumber = 1    

        AND t2.dateNumber = 2    

        AND t3.dateNumber = 3

        AND t1.Mätfunktion = t2.Mätfunktion 

        AND t2.Mätfunktion = t3.Mätfunktion

) AS tSum

GROUP BY Kontraktsnummer, Kundnummer, Personnummer, Produktkod, Kampanjkod, [Kontraktsdel startdatum], [Kontraktsdel slutdatum], [Datum Förbrukning 1], [Datum Förbrukning 2], [Datum Förbrukning 3]

ORDER BY Kontraktsnummer

DROP TABLE #tmpResultTable2

DROP TABLE #tmpResultTable3

DROP TABLE #tmpResultTable4

DROP TABLE #tmpResultTable5

---

Bifogade filer

warning Warning.