database:procedures:pears_netreportclientstats



pears.NetReportClientStats

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

CREATE PROCEDURE "pears"."NetReportClientStats"( IN "pWebUserID" CHAR(20),IN "Start_Date__d" CHAR(20) DEFAULT NULL,IN "Weeks__i" CHAR(20) DEFAULT NULL ) 
RESULT( "Serial__H" INTEGER,"Week_Start_Date__DX1Z" DATE,"Week_End_Date__DH" DATE,"New_Vacancies__GRT" INTEGER,"New_Vacancies_Temp__RT" INTEGER,"New_Vacancies_Perm__RT" INTEGER,"New_Placements__GRT" INTEGER,"New_Placements_Temp__RT" INTEGER,"New_Placements_Perm__RT" INTEGER ) 
BEGIN
  DECLARE "pWeeks" INTEGER;
  DECLARE "pStartDate" DATE;
  DECLARE LOCAL TEMPORARY TABLE "Cos"(
    "CompanyID" CHAR(20) NOT NULL,
    PRIMARY KEY("CompanyID"),
    ) NOT transactional;
  SET "pWeeks" = "isnull"("nullif"("trim"("Weeks__I"),''),52);
  SET "pStartDate" = "IQXNetStringToDate"("Start_Date__D");
  IF "pStartDate" IS NULL THEN
    SET "pStartDate" = "dateadd"("week",-52,CURRENT DATE)
  END IF;
  INSERT INTO "Cos"( "CompanyID" ) SELECT DISTINCT "companyid" FROM "employment" KEY JOIN "iqxnetuserlink" WHERE "iqxnetuserid" = "pWebUserID";
  SELECT("a"."row_num"-1)*255+("b"."row_num"-1) AS "Serial",
    "dateadd"("week","Serial","pStartDate") AS "WeekStartDate",
    "dateadd"("day",6,"WeekStartDate") AS "WeekEndDate",
    (SELECT "count"("vacancyid") FROM "vacancy" KEY JOIN "employment" WHERE "EntryDate" BETWEEN "WeekStartDate" AND "WeekEndDate" AND "employment"."companyid" = any(SELECT "companyid" FROM "Cos")) AS "NewVacanciesAll",
    (SELECT "count"("vacancyid") FROM "vacancy" KEY JOIN "employment" WHERE "EntryDate" BETWEEN "WeekStartDate" AND "WeekEndDate" AND "employment"."companyid" = any(SELECT "companyid" FROM "Cos") AND "vacancy"."temp" = 1) AS "NewVacanciesTemp",
    "NewVacanciesAll"-"NewVacanciesTemp" AS "NewVacanciesPerm",
    (SELECT "count"("placementid") FROM "placement" KEY JOIN "employment" WHERE "PlaceDate" BETWEEN "WeekStartDate" AND "WeekEndDate" AND "employment"."companyid" = any(SELECT "companyid" FROM "Cos")) AS "NewPlacementsAll",
    (SELECT "count"("placementid") FROM "placement" KEY JOIN "employment" WHERE "PlaceDate" BETWEEN "WeekStartDate" AND "WeekEndDate" AND "employment"."companyid" = any(SELECT "companyid" FROM "Cos") AND "employment"."temp" = 1) AS "NewPlacementsTemp",
    "NewPlacementsAll"-"NewPlacementsTemp" AS "NewPlacementsPerm"
    FROM "rowgenerator" AS "a" CROSS JOIN "rowgenerator" AS "b"
    WHERE "Serial" < "pWeeks"
    ORDER BY "Serial" ASC
END
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetReportClientStats" IS 
{CREATE PROCEDURE pears."NetReportClientStats"(IN pWebUserID CHAR(20),IN Start_Date__d CHAR(20) DEFAULT NULL,IN Weeks__i CHAR(20) DEFAULT NULL)
RESULT(Serial__H INTEGER,Week_Start_Date__DX1Z DATE,Week_End_Date__DH DATE,New_Vacancies__GRT INTEGER,New_Vacancies_Temp__RT INTEGER,New_Vacancies_Perm__RT INTEGER,New_Placements__GRT INTEGER,New_Placements_Temp__RT INTEGER,New_Placements_Perm__RT INTEGER)
BEGIN
  DECLARE pWeeks INTEGER;
  DECLARE pStartDate DATE;
  DECLARE LOCAL TEMPORARY TABLE Cos(
    CompanyID CHAR(20) NOT NULL,
    PRIMARY KEY(CompanyID),
    ) NOT transactional;
  SET pWeeks=isnull(NULLIF(TRIM(Weeks__I),''),52);
  SET pStartDate=IQXNetStringToDate(Start_Date__D);
  IF pStartDate IS NULL THEN
    SET pStartDate=dateadd(week,-52,CURRENT DATE)
  END IF;
  INSERT INTO Cos( CompanyID) SELECT DISTINCT companyid FROM employment KEY JOIN iqxnetuserlink WHERE iqxnetuserid = pWebUserID;
  SELECT(a.row_num-1)*255+(b.row_num-1) AS Serial,
    dateadd(week,Serial,pStartDate) AS WeekStartDate,
    dateadd(DAY,6,WeekStartDate) AS WeekEndDate,
    (SELECT COUNT(vacancyid) FROM vacancy KEY JOIN employment WHERE EntryDate BETWEEN WeekStartDate AND WeekEndDate AND employment.companyid = any(SELECT companyid FROM Cos)) AS NewVacanciesAll,
    (SELECT COUNT(vacancyid) FROM vacancy KEY JOIN employment WHERE EntryDate BETWEEN WeekStartDate AND WeekEndDate AND employment.companyid = any(SELECT companyid FROM Cos) AND vacancy.temp = 1) AS NewVacanciesTemp,
    NewVacanciesAll-NewVacanciesTemp AS NewVacanciesPerm,
    (SELECT COUNT(placementid) FROM placement KEY JOIN employment WHERE PlaceDate BETWEEN WeekStartDate AND WeekEndDate AND employment.companyid = any(SELECT companyid FROM Cos)) AS NewPlacementsAll,
    (SELECT COUNT(placementid) FROM placement KEY JOIN employment WHERE PlaceDate BETWEEN WeekStartDate AND WeekEndDate AND employment.companyid = any(SELECT companyid FROM Cos) AND employment.temp = 1) AS NewPlacementsTemp,
    NewPlacementsAll-NewPlacementsTemp AS NewPlacementsPerm
    FROM rowgenerator AS a CROSS JOIN rowgenerator AS b
    WHERE Serial < pWeeks ORDER BY
    Serial ASC
END
}
  • database/procedures/pears_netreportclientstats.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1