/* Einzeldarstellung Leistungstage (ambulant) in Hilfearten an Empfänger nach Jahren aus Budgetstammdaten - hebush - SQL Server 2000 Prosoz 14plus version 5.02 Die Abfrage berücksichtigt sowohl ein offenes Ende oder ein Ende in der Zukunft in den Budgetstammdaten bzw. auch ein Datum Endezahlung mit vergessener Beendigung der Budgetstammdaten. Diese Abfrage benötigt eine Hilfetabelle 'Jahre', die als View anzulegen ist mit: CREATE VIEW lip_htab_jahr AS SELECT DISTINCT hhjahr FROM buzahl */ declare @aktJahr char (4) declare @aktDatum AS datetime set @aktJahr = year (getdate () ) set @aktDatum = getdate () SELECT vg.bereich, be.bb AS [Sachbearbeiter], vg.aktenzeichen AS [Aktenzeichen], ad2.nachname AS [Nachname], ad2.vorname AS [Vorname], ha.bez AS [Hilfeart], convert (varchar (10), vg.endezahlung, 104) AS [Endezahlung], convert (varchar (10), hs.datvon, 104) AS [Beginn Hilfe], convert (varchar (10), hs.datbis, 104) AS [Ende Hilfe], ad.nachname AS [Empfänger Nachname], ad.vorname AS [Empfänger Vorname], hs.fwnr, hb.typ, jj.hhjahr, CASE WHEN year (vg.endezahlung) = jj.hhjahr THEN datediff (dd, CAST('31.12.' + CAST(YEAR(vg.endezahlung)-1 AS CHAR(4)) AS DATETIME), vg.endezahlung) ELSE (CASE WHEN year (vg.endezahlung) < jj.hhjahr THEN '0' ELSE CASE WHEN hs.datbis IS NULL THEN CASE WHEN hs.datvon>CAST('01.01.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME) THEN (datediff(dd, hs.datvon, CASE WHEN jj.hhjahr=year(getdate()) THEN GETDATE() ELSE CAST('31.12.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME) END )+ 1) ELSE (datediff(dd, CAST('01.01.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME), CASE WHEN jj.hhjahr=year(getdate()) THEN GETDATE() ELSE CAST('31.12.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME) END )+ 1) END ELSE CASE WHEN hs.datvon>CAST('01.01.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME) THEN (datediff(dd, hs.datvon, CASE WHEN jj.hhjahr=year(hs.datbis) THEN hs.datbis ELSE CAST('31.12.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME) END )+ 1) ELSE (datediff(dd, CAST('01.01.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME), CASE WHEN jj.hhjahr=year(hs.datbis) THEN hs.datbis ELSE CAST('31.12.' + CAST(jj.hhjahr AS CHAR(4)) AS DATETIME) END )+ 1) END END END) END AS [Tage] FROM lip_htab_jahr jj, hebush hs left join hebuch hb ON (hs.vlnr = hb.lnr) left join n_vorgbeteiligte vb ON (vb.beteiligtennummer = hb.n_vorgbet_fk) left join n_adressen ad ON (ad.adressnummer = vb.adresse) left join n_vorgang vg ON (vg.vorgangsnummer = vb.vorgang) left join n_personendaten pd ON (ad.adressnummer = pd.zuordnungsnummer) left join land la ON (pd.nationalitaet = la.lns) left join bere be ON (be.brs = vg.bereich) left join n_beteiligtenarten ba ON (vb.beteiligtenart = ba.betnummer) left join fewe fe ON (fe.fwnr = hs.fwnr) left join hilfeart ha ON (hs.hifanr = ha.lnr) left join n_adressen ad2 ON (ad2.adressnummer = (SELECT distinct (adresse) FROM n_vorgbeteiligte WHERE vorgang = vg.vorgangsnummer AND vg.muendelnr_alt = hb.mnr AND beteiligtenart = 7)) WHERE -- nur relevante Jahre jj.hhjahr >= year(hs.datvon) AND jj.hhjahr <= year(isnull(vg.endezahlung, CAST('31.12.2999' AS DATETIME))) AND jj.hhjahr <= year(isnull(hs.datbis, CAST('31.12.2999' AS DATETIME))) -- Fälle WiHi AND vg.bereich BETWEEN 3000 AND 3999 AND hb.typ = 'E' -- ambulante Hilfen AND hs.hifanr IN (11, 21, 23, 42, 45, 138, 206, 207, 208, 209, 210, 212, 213, 214, 223, 224, 22, 43, 44, 211, 215, 46) -- Fall muss schon begonnen haben AND vg.beginnvorgang < getdate () ORDER BY hb.mnr, ad.adressnummer, ha.bez, hs.datvon, jj.hhjahr