Årlig återrapportering till OKQ8 (återbäring/medlemsbonus)
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
---