import { ViewColumn, ViewEntity } from "typeorm"; @ViewEntity({ expression: ` SELECT DATE(MIN(commandDateAffect)) AS commandDateAffect, TIMESTAMPDIFF( DAY, LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) AS days_diff, TIMESTAMPDIFF( DAY, LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years', TIMESTAMPDIFF( DAY, LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months', TIMESTAMPDIFF( DAY, LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days', positionName, positionCee, posNo, positionExecutive, positionType, positionLevel, OrgRoot, orgChild1, orgChild2, orgChild3, orgChild4, commandCode, commandName, commandNo, commandYear, remark, profileId, ROW_NUMBER() OVER (PARTITION BY profileId ORDER BY commandDateAffect ASC) AS orderNumber FROM profileSalary WHERE commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16) GROUP BY profileId, positionName UNION ALL SELECT CURDATE() AS commandDateAffect, TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff, TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years', TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months', TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days', NULL AS positionName, NULL AS positionCee, NULL AS posNo, NULL AS positionExecutive, NULL AS positionType, NULL AS positionLevel, NULL AS OrgRoot, NULL AS orgChild1, NULL AS orgChild2, NULL AS orgChild3, NULL AS orgChild4, NULL AS commandCode, NULL AS commandName, NULL AS commandNo, NULL AS commandYear, 'Comparison with current date' AS remark, profileId, NULL AS orderNumber FROM profileSalary WHERE commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16) GROUP BY profileId ORDER BY profileId, commandDateAffect ASC `, }) export class viewCurrentTenureOfficer { @ViewColumn() commandDateAffect: Date; @ViewColumn() days_diff: number; @ViewColumn() Years: number; @ViewColumn() Months: number; @ViewColumn() Days: number; @ViewColumn() positionName: string; @ViewColumn() positionCee: string; @ViewColumn() posNo: string; @ViewColumn() positionExecutive: string; @ViewColumn() positionType: string; @ViewColumn() positionLevel: string; @ViewColumn() OrgRoot: string; @ViewColumn() orgChild1: string; @ViewColumn() orgChild2: string; @ViewColumn() orgChild3: string; @ViewColumn() orgChild4: string; @ViewColumn() commandCode: number; @ViewColumn() commandName: string; @ViewColumn() commandNo: string; @ViewColumn() commandYear: number; @ViewColumn() remark: string; @ViewColumn() profileId: string; @ViewColumn() orderNumber: number; }