Artikkeliin on koottu tyyppillisiä henkilötietojen poimintaan liittyviä esimerkkejä.
Löydät tietokantataulujen sarakekuvaukset täältä
Tyypilliset työajan poiminnan esimerkit ovat tässä artikkelissa, poissaolojen poiminnan esimerkit ovat tässä artikkelissa ja projektirakenteen tai projektien huomioiden poiminta tässä artikkelissa.
Liitetään hakuun henkilötiedot ja poimitaan henkilön nimi osaksi kommenttia.
SELECT usersalarydata.*,
userdata.Firstname || ' ' || userdata.Lastname AS OverrideComment
FROM UserSalaryData
LEFT JOIN UserData ON UserData.UserId = UserSalaryData.UserId
Liitetään hakuun henkilötietoa sen voimassaolon mukaan.
UserInfo-taulu henkilötiedot voimassaoloaikoineen. On tärkeää huomioida voimassaolon tarkistus säännöllä, kuten esimerkissä on kuvattu. Jos voimassaolon tarkistusta ei tehdä muodostuu poiminnan tuloksena moninkerta palkkalajin määrää. UserInfo-taulun kuvaus löytyy täältä.
SELECT UserSalaryData.*, SUM(UserSalaryData.amount) AS OverrideAmount,
UserInfoData.Value AS OverrideCustomData1
FROM UserSalaryData
LEFT JOIN UserInfoData ON (
UserInfoData.UserId = UserSalaryData.UserId AND
UserInfoData.InfoTypeName = 'RootUserGroupCode_SDSQL' AND
datetime(UserSalaryData.SalaryRenderingDate) BETWEEN
UserInfoData.ValidFrom AND UserInfoData.ValidTo
)
WHERE UserSalaryData.compensationType = 'BasicTime'
AND UserData.DefaultProjectId1 IS NOT NULL
GROUP BY UserSalaryData.compensationType,
UserSalaryData.salaryRenderingDate
Henkilön työsuhteen alkupäivän hakeminen päivämäärämuodossa UserInfoData -taulusta
Koneellista päivämäärämuotoa tarvitaan jos halutaan käyttää automaattista palkka-aineistomallin mukaista päivämäärän muotoilua. UserInfo-taulun kuvaus löytyy täältä.
SELECT
CASE WHEN Value IS NULL OR Value = '' THEN NULL
ELSE
date(
substring_index(Value, '.', -1) || '-' ||
substr('0' || substring_index(substring_index(Value, '.', 2), '.', -1), -2, 2) ||
'-' || substr('0' || substring_index(Value, '.', 1), -2, 2)
)
END AS CustomData1
FROM UserInfoData
WHERE InfoTypeName = 'LastWorkingContractBeginDate'
Poimitaan henkilöryhmän puurakenne
Poimitaan henkilöryhmän puurakenne ja esitetään puurakenteen koodi henkilön kalleusluokka -tiedossa. Koodin osat erotellaan / -merkillä.
WITH RECURSIVE UserGroupRecursive (Id, Depth, Code, Name, ParentId, AssignedGroupId) AS (
SELECT Id, Depth, Code, Name, ParentId, Id AS AssignedGroupId
FROM UserGroupData
UNION ALL
SELECT g.Id, g.Depth, g.Code, g.Name, g.ParentId, r.AssignedGroupId
FROM UserGroupData g
JOIN UserGroupRecursive r ON (r.ParentId = g.Id)
WHERE r.Depth > g.Depth
)
SELECT s.*,
CASE WHEN g1.Code IS NULL THEN '' ELSE g1.Code END ||
CASE WHEN g2.Code IS NULL THEN '' ELSE '/' || g2.Code END ||
CASE WHEN g3.Code IS NULL THEN '' ELSE '/' || g3.Code END ||
CASE WHEN g4.Code IS NULL THEN '' ELSE '/' || g4.Code END AS OverrideUserCostGroup
FROM UserSalaryData s
LEFT JOIN UserInfoData i ON (
i.UserId = s.UserId AND i.InfoTypeName = 'UserGroupId_SDSQL' AND
datetime(s.SalaryRenderingDate) BETWEEN i.ValidFrom AND i.ValidTo
)
LEFT JOIN UserGroupRecursive g1 ON (CAST(i.Value AS INTEGER) = g1.AssignedGroupId AND g1.Depth = 0)
LEFT JOIN UserGroupRecursive g2 ON (CAST(i.Value AS INTEGER) = g2.AssignedGroupId AND g2.Depth = 1)
LEFT JOIN UserGroupRecursive g3 ON (CAST(i.Value AS INTEGER) = g3.AssignedGroupId AND g3.Depth = 2)
LEFT JOIN UserGroupRecursive g4 ON (CAST(i.Value AS INTEGER) = g4.AssignedGroupId AND g4.Depth = 3)
WHERE s.CompensationType = 'BasicTime'
Poimitaan henkilöryhmien ja projektien puurakenne
WITH RECURSIVE UserGroupRecursive (Id, Depth, Code, Name, ParentId, AssignedGroupId) AS (
SELECT Id, Depth, Code, Name, ParentId, Id AS AssignedGroupId
FROM UserGroupData
UNION ALL
SELECT g.Id, g.Depth, g.Code, g.Name, g.ParentId, r.AssignedGroupId
FROM UserGroupData g
JOIN UserGroupRecursive r ON (r.ParentId = g.Id)
WHERE r.Depth > g.Depth
), ProjectRecursive (Id, Depth, Code, Name, ExternalId, TypeInternalName, ParentId, AssignedProjectId)
AS (
SELECT Id, Depth, Code, Name, ExternalId, TypeInternalName, ParentId, Id AS AssignedProjectId
FROM ProjectData WHERE IsAssignedProject = 'Y'
UNION ALL
SELECT p.Id, p.Depth, p.Code, p.Name, p.ExternalId, p.TypeInternalName, p.ParentId, r.AssignedProjectId
FROM ProjectData p
JOIN ProjectRecursive r ON (r.ParentId = p.Id)
WHERE r.Depth > p.Depth
)
SELECT s.*,
CASE WHEN g1.Code IS NULL THEN '' ELSE g1.Code END ||
CASE WHEN g2.Code IS NULL THEN '' ELSE '/' || g2.Code END ||
CASE WHEN g3.Code IS NULL THEN '' ELSE '/' || g3.Code END ||
CASE WHEN g4.Code IS NULL THEN '' ELSE '/' || g4.Code END AS OverrideUserCostGroup,
p1.Id AS OverrideProjectId1,
p2.Id AS OverrideProjectId2,
p3.Id AS OverrideProjectId3,
p4.Id AS OverrideProjectId4,
p1.ExternalId AS OverrideProjectExternalIdentifier1,
p2.ExternalId AS OverrideProjectExternalIdentifier2,
p3.ExternalId AS OverrideProjectExternalIdentifier3,
p4.ExternalId AS OverrideProjectExternalIdentifier4,
p1.TypeInternalName AS OverrideProjectType1,
p2.TypeInternalName AS OverrideProjectType2,
p3.TypeInternalName AS OverrideProjectType3,
p4.TypeInternalName AS OverrideProjectType4,
p1.Code AS OverrideProjectCode1,
p2.Code AS OverrideProjectCode2,
p3.Code AS OverrideProjectCode3,
p4.Code AS OverrideProjectCode4,
p1.Name AS OverrideProjectName1,
p2.Name AS OverrideProjectName2,
p3.Name AS OverrideProjectName3,
p4.Name AS OverrideProjectName4
FROM UserSalaryData s
LEFT JOIN UserInfoData i ON (
i.UserId = s.UserId AND i.InfoTypeName = 'UserGroupId_SDSQL' AND
datetime(s.SalaryRenderingDate) BETWEEN i.ValidFrom AND i.ValidTo
)
LEFT JOIN UserGroupRecursive g1 ON (CAST(i.Value AS INTEGER) = g1.AssignedGroupId AND g1.Depth = 0)
LEFT JOIN UserGroupRecursive g2 ON (CAST(i.Value AS INTEGER) = g2.AssignedGroupId AND g2.Depth = 1)
LEFT JOIN UserGroupRecursive g3 ON (CAST(i.Value AS INTEGER) = g3.AssignedGroupId AND g3.Depth = 2)
LEFT JOIN UserGroupRecursive g4 ON (CAST(i.Value AS INTEGER) = g4.AssignedGroupId AND g4.Depth = 3)
LEFT JOIN ProjectRecursive p1 ON (s.ProjectId1 = p1.AssignedProjectId AND p1.Depth = 0)
LEFT JOIN ProjectRecursive p2 ON (s.ProjectId1 = p2.AssignedProjectId AND p2.Depth = 1)
LEFT JOIN ProjectRecursive p3 ON (s.ProjectId1 = p3.AssignedProjectId AND p3.Depth = 2)
LEFT JOIN ProjectRecursive p4 ON (s.ProjectId1 = p4.AssignedProjectId AND p4.Depth = 3)
WHERE s.CompensationType = 'BasicTime'
Poimitaan henkilöiden ulkoisten palveluiden tunnisteet vientiä varten.
SELECT*, uid.value as overrideintegrationid
FROM UserSalaryData as usd
LEFT JOIN UserInfoData AS uid ON usd.userId = uid.userId
AND datetime(UserSalaryData.SalaryRenderingDate) BETWEEN
UserInfoData.ValidFrom AND UserInfoData.ValidTo
WHERE uid.infotypename = 'IntegrationIdAastra' -- or IntegrationIdKieku or DefaultCostGroupCode etc..
-- AND usd.compensationtype = 'BasicTime'
-- AND jne
Kommentit
0 kommenttia
Kirjaudu sisään jättääksesi kommentin.