SELECT p.ANREDE + ' ' +
p.VORNAME + ( CASE WHEN p.RUFNAME IS NOT NULL
AND len(p.RUFNAME) > 0
THEN ' "' + p.RUFNAME + '"'
ELSE ''
END ) +
' ' + p.NAME AS [Name],
z.nummer AS [PersNr],
convert(char(10), z.zeitraum_von, 104) AS [Beginn],
convert(char(10), z.zeitraum_bis, 104) AS [Ende],
--------------------------------------------------------------------------------
( CASE WHEN z.zeitraum_bis IS NOT NULL
THEN ( CASE WHEN datepart(dd,z.zeitraum_bis) < datepart(dd,z.zeitraum_von)
THEN ( datediff(mm,z.zeitraum_von,z.zeitraum_bis) - 1 ) / 12
ELSE datediff(mm,z.zeitraum_von,z.zeitraum_bis) / 12
END )
ELSE ( CASE WHEN datepart(dd,getdate()) < datepart(dd,z.zeitraum_von)
THEN ( datediff(mm,z.zeitraum_von,getdate()) - 1 ) / 12
ELSE datediff(mm,z.zeitraum_von,getdate()) / 12
END )
END ) AS [Jahre],
( CASE WHEN z.zeitraum_bis IS NOT NULL
THEN ( CASE WHEN datepart(dd,z.zeitraum_bis) < datepart(dd,z.zeitraum_von)
THEN datediff(mm,z.zeitraum_von,z.zeitraum_bis) - 1 -
datediff(mm,z.zeitraum_von,z.zeitraum_bis) / 12 * 12
ELSE datediff(mm,z.zeitraum_von,z.zeitraum_bis) -
datediff(mm,z.zeitraum_von,z.zeitraum_bis) / 12 * 12
END )
ELSE ( CASE WHEN datepart(dd,getdate()) < datepart(dd,z.zeitraum_von)
THEN datediff(mm,z.zeitraum_von,getdate()) - 1 -
datediff(mm,z.zeitraum_von,getdate()) / 12 * 12
ELSE datediff(mm,z.zeitraum_von,getdate()) -
datediff(mm,z.zeitraum_von,getdate()) / 12 * 12
END )
END ) AS [Monate],
( CASE WHEN z.zeitraum_bis IS NOT NULL
THEN ( CASE WHEN datepart(dd,z.zeitraum_bis) = datepart(dd,z.zeitraum_von)
THEN 1
ELSE ( CASE WHEN datepart(dd,z.zeitraum_bis) > datepart(dd,z.zeitraum_von)
THEN datepart(dd,z.zeitraum_bis) - datepart(dd,z.zeitraum_von) + 1
ELSE day(dateadd(mm,datediff(mm,-1,z.zeitraum_von),-1)) -
datepart(dd,z.zeitraum_von) + datepart(dd,z.zeitraum_bis)
END )
END )
ELSE ( CASE WHEN datepart(dd,getdate()) = datepart(dd,z.zeitraum_von)
THEN 1
ELSE ( CASE WHEN datepart(dd,getdate()) > datepart(dd,z.zeitraum_von)
THEN datepart(dd,getdate()) - datepart(dd,z.zeitraum_von) + 1
ELSE day(dateadd(mm,datediff(mm,-1,z.zeitraum_von),-1)) -
datepart(dd,z.zeitraum_von) + datepart(dd,getdate())
END )
END )
END ) AS [Tage],
--------------------------------------------------------------------------------
convert(char(10), p.GEBURTSDATUM, 104) + ( CASE WHEN p.TODESDATUM IS NOT NULL
THEN ' ( '+ char(134) + ' ' + convert(char(10), p.TODESDATUM, 104) + ')'
ELSE ''
END ) AS [Geburtsdatum],
--------------------------------------------------------------------------------
( CASE WHEN p.TODESDATUM IS NOT NULL
THEN ( CASE WHEN datepart(dd,p.TODESDATUM) < datepart(dd,p.GEBURTSDATUM)
THEN ( datediff(mm,p.GEBURTSDATUM,p.TODESDATUM) - 1 ) / 12
ELSE datediff(mm,p.GEBURTSDATUM,p.TODESDATUM) / 12
END )
ELSE ( CASE WHEN datepart(dd,getdate()) < datepart(dd,p.GEBURTSDATUM)
THEN ( datediff(mm,p.GEBURTSDATUM,getdate()) - 1 ) / 12
ELSE datediff(mm,p.GEBURTSDATUM,getdate()) / 12
END )
END ) AS [Jahre_],
( CASE WHEN p.TODESDATUM IS NOT NULL
THEN ( CASE WHEN datepart(dd,p.TODESDATUM) < datepart(dd,p.GEBURTSDATUM)
THEN datediff(mm,p.GEBURTSDATUM,p.TODESDATUM) - 1 -
datediff(mm,p.GEBURTSDATUM,p.TODESDATUM) / 12 * 12
ELSE datediff(mm,p.GEBURTSDATUM,p.TODESDATUM) -
datediff(mm,p.GEBURTSDATUM,p.TODESDATUM) / 12 * 12
END )
ELSE ( CASE WHEN datepart(dd,getdate()) < datepart(dd,p.GEBURTSDATUM)
THEN datediff(mm,p.GEBURTSDATUM,getdate()) - 1 -
datediff(mm,p.GEBURTSDATUM,getdate()) / 12 * 12
ELSE datediff(mm,p.GEBURTSDATUM,getdate()) -
datediff(mm,p.GEBURTSDATUM,getdate()) / 12 * 12
END )
END ) AS [Monate_],
( CASE WHEN p.TODESDATUM IS NOT NULL
THEN ( CASE WHEN datepart(dd,p.TODESDATUM) = datepart(dd,p.GEBURTSDATUM)
THEN 1
ELSE ( CASE WHEN datepart(dd,p.TODESDATUM) > datepart(dd,p.GEBURTSDATUM)
THEN datepart(dd,p.TODESDATUM) - datepart(dd,p.GEBURTSDATUM) + 1
ELSE day(dateadd(mm,datediff(mm,-1,p.GEBURTSDATUM),-1)) -
datepart(dd,p.GEBURTSDATUM) + datepart(dd,p.TODESDATUM)
END )
END )
ELSE ( CASE WHEN datepart(dd,getdate()) = datepart(dd,p.GEBURTSDATUM)
THEN 1
ELSE ( CASE WHEN datepart(dd,getdate()) > datepart(dd,p.GEBURTSDATUM)
THEN datepart(dd,getdate()) - datepart(dd,p.GEBURTSDATUM) + 1
ELSE day(dateadd(mm,datediff(mm,-1,p.GEBURTSDATUM),-1)) -
datepart(dd,p.GEBURTSDATUM) + datepart(dd,getdate())
END )
END )
END ) AS [Tage_],
--------------------------------------------------------------------------------
'' + ( CASE WHEN z.abteilung IS NOT NULL
AND len(z.abteilung) > 1
THEN 'Abteilung: ' + z.abteilung + ' '
ELSE ''
END ) + (
CASE WHEN z.nperson_bezeichnung2 IS NOT NULL
AND len(z.nperson_bezeichnung2) > 1
THEN 'Funktion: ' + z.nperson_bezeichnung2 + ' '
ELSE ''
END ) + (
CASE WHEN z.bemerkung IS NOT NULL
AND len(convert(varchar(255), z.bemerkung)) > 1
THEN 'Bemerkung: ' + convert(varchar(255), z.bemerkung) + ' '
ELSE ''
END ) AS [Sonstiges]
FROM PERSONEN p,
z_jperson_nperson z
WHERE p.ty06_mitarbeiter = 1
AND p.SID_PERSONEN = z.nperson_fk
AND z.jperson_fk = xxx
ORDER BY [Jahre] DESC,[Monate] DESC,[Tage] DESC