Sample source SQL for data driver source
A driver source SQL defines the historical series for the a driver such as Overtime, Census, or Vacant Shifts. It is used by the Forecast Engine Data Sync task to retrieve data for specific teams and date ranges.
When you are creating a source SQL for a driver source, take note of these reminders:
- Data is returned in a standard three-column shape for Team, Date, and Value.
- Only use a valid
SELECTstatement in your query. - A validator checks SQL grammar, security risks, and general structure when the query is saved, not run.
- The query must contain dates as parameters. If these parameters are blank or if the query does not contain a date filter, a full load is generated from 1900-01-01 to 3000-01-01.
Sample query:
SELECT
t.WBT_NAME AS TEAM,
w.WRKD_WORK_DATE AS DATE,
SUM(
CASE
WHEN w.WRKD_HOURS > w.WRKD_REG_HOURS
THEN (w.WRKD_HOURS - w.WRKD_REG_HOURS)
ELSE 0
END
) AS VALUE
FROM
WORK_DETAIL w
JOIN WORKBRAIN_TEAM t
ON t.WBT_ID = w.WBT_ID
WHERE
w.WRKD_WORK_DATE = NVL(:START_DATE, DATE '1900-01-01')
AND w.WRKD_WORK_DATE NVL(:END_DATE, DATE '3000-01-01')
AND w.WRKD_HOURS w.WRKD_REG_HOURS -- Only include overtime
GROUP BY
t.WBT_NAME,
w.WRKD_WORK_DATE;
For multiple tables or views, you can use
UNION or UNION ALL. Refer to this sample query:
SELECT
TEAM,
DATE,
VALUE
FROM
(
SELECT
t.WBT_NAME AS TEAM,
w1.WRKD_WORK_DATE AS DATE,
SUM(w1.DRIVER_VALUE_1) AS VALUE
FROM TABLE_1 w1
JOIN WORKBRAIN_TEAM t ON t.WBT_ID = w1.WBT_ID
WHERE
w1.WRKD_WORK_DATE >= NVL(:START_DATE, DATE '1900-01-01')
AND w1.WRKD_WORK_DATE < NVL(:END_DATE, DATE '3000-01-01')
GROUP BY
t.WBT_NAME,
w1.WRKD_WORK_DATE
UNION ALL
SELECT
t.WBT_NAME AS TEAM,
w2.WRKD_WORK_DATE AS DATE,
SUM(w2.DRIVER_VALUE_2) AS VALUE
FROM TABLE_2 w2
JOIN WORKBRAIN_TEAM t ON t.WBT_ID = w2.WBT_ID
WHERE
w2.WRKD_WORK_DATE >= NVL(:START_DATE, DATE '1900-01-01')
AND w2.WRKD_WORK_DATE < NVL(:END_DATE, DATE '3000-01-01')
GROUP BY
t.WBT_NAME,
w2.WRKD_WORK_DATE
);