GLE-Postgis-Interne-Flurstückslisten

Aus kvwmap
Wechseln zu: Navigation, Suche

Die Views werden in ein LK-eigenes Schema "alkis_eigen" gespeichert. Bei Bedarf ändern!


View Buchung mit Eigentum

Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_buchung_mit_eigentum AS 
SELECT foo.flurstueck_gml_id,
   foo.buchungsblatt_gml_id,
   regexp_replace(((foo.buchung || COALESCE(foo.anteil || '
'::text, ::text)) || COALESCE(foo.nraufteilungsplan || '
'::text, ::text)) || COALESCE(foo.buchungstext || '
'::text, ::text), '(^[\n\r]+)|([\n\r]+$)'::text, ::text, 'g'::text) AS buchung
  FROM ( SELECT f.gml_id AS flurstueck_gml_id,
           g.gml_id AS buchungsblatt_gml_id,
           ((((((((art.beschreibung::text || ': '::text) || b.bezeichnung::text) || ' '::text) || g.land::text) || g.bezirk::text) || '-'::text) || ltrim(g.buchungsblattnummermitbuchstabenerweiterung::text, '0'::text)) || ', Laufende Nummer '::text) || ltrim(s.laufendenummer::text, '0'::text) AS buchung,
               CASE
                   WHEN s.zaehler <> 0::double precision THEN (
                   CASE
                       WHEN s.zaehler = s.nenner THEN '(Anteil nicht ermittelbar)'::text
                       ELSE (
                       CASE
                           WHEN mod(s.zaehler::numeric, ceil(s.zaehler::numeric)) = 0::numeric THEN to_char(s.zaehler::integer, 'FM999G999G999'::text)
                           ELSE replace(s.zaehler::text, '.'::text, ','::text)
                       END || '/'::text) ||
                       CASE
                           WHEN mod(s.nenner::numeric, ceil(s.nenner::numeric)) = 0::numeric THEN to_char(s.nenner::numeric, 'FM999G999G999G999'::text)
                           ELSE replace(s.nenner::text, '.'::text, ','::text)
                       END
                   END || ' Miteigentumsanteil am Grundstück'::text) || COALESCE(' verbunden mit dem Sondereigentum an '::text || s.beschreibungdessondereigentums::text, ::text)
                   ELSE ::text
               END AS anteil,
           ('Nr. '::text || s.nummerimaufteilungsplan::text) || ' laut Aufteilungsplan'::text AS nraufteilungsplan,
           'Buchungstext: '::text || s.buchungstext::text AS buchungstext
          FROM alkis.ax_buchungsblatt g
            LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text
            LEFT JOIN alkis.ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id
            LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) OR (f.istgebucht = ANY (s.an))
            LEFT JOIN alkis.ax_buchungsart_buchungsstelle art ON s.buchungsart = art.wert
         WHERE g.blattart = 1000 AND f.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL
         ORDER BY g.bezirk::integer, g.buchungsblattnummermitbuchstabenerweiterung::integer, s.laufendenummer::integer) foo;

View Buchung ohne Eigentum

Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung, wobei eigentumsrelevante Inhalte weggelassen werden.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_buchung_ohne_eigentum AS 
SELECT f.gml_id AS flurstueck_gml_id,
   g.gml_id AS buchungsblatt_gml_id,
   ((((((((art.beschreibung::text || ': '::text) || b.bezeichnung::text) || ' '::text) || g.land::text) || g.bezirk::text) || '-'::text) || ltrim(g.buchungsblattnummermitbuchstabenerweiterung::text, '0'::text)) || '
Laufende Nummer '::text) || ltrim(s.laufendenummer::text, '0'::text) AS buchung
  FROM alkis.ax_buchungsblatt g
    LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text
    LEFT JOIN alkis.ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id
    LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) OR (f.istgebucht = ANY (s.an))
    LEFT JOIN alkis.ax_buchungsart_buchungsstelle art ON s.buchungsart = art.wert
 WHERE g.blattart = 1000 AND f.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL
 ORDER BY g.bezirk::integer, g.buchungsblattnummermitbuchstabenerweiterung::integer, s.laufendenummer::integer;

View Eigentümer mit Anschrift

Der View verknüpft Buchungsblatt, Namensnummer, Person und Anschrift und sammelt alle relevanten Informationen für das Eigentum. Ab der dritten belegten Stelle in der laufenden Namensnummer wird für jede belegte Stelle eine weitere Einrückung berechnet. Laufende Namensnummern können in der APK irrtümlich falsch geschrieben werden, z.B. "2,1". Die Abfrage versucht das abzufangen.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_eigentuemer_anschrift AS 
SELECT foo2.buchungsblatt_gml_id,
   foo2.lfd ||
       CASE
           WHEN foo2.eigentuemer IS NULL THEN ::text
           ELSE '
'::text || foo2.eigentuemer
       END AS eigentuemer
  FROM ( SELECT foo.buchungsblatt_gml_id,
           (foo.whitespace || foo.lfd) || COALESCE((' zu '::text || foo.anteil) ||
               CASE
                   WHEN foo.beschrieb IS NULL THEN ::text
                   ELSE ':'::text
               END, ::text) AS lfd,
           ((((((((foo.whitespace || COALESCE(foo.akademischergrad::text || ' '::text, ::text)) || COALESCE(foo.vorname::text || ' '::text, ::text)) || foo.nachnameoderfirma::text) || COALESCE(foo.namensbestandteil, ::text)) || COALESCE(', '::text || foo.geburtsdaten, ::text)) ||
               CASE
                   WHEN foo.strasse IS NULL THEN ::text
                   ELSE '
'::text
               END) || foo.whitespace) || COALESCE(foo.strasse::text || COALESCE(' '::text || foo.hausnummer::text, ::text), ::text)) || COALESCE(((((', '::text || foo.postleitzahlpostzustellung::text) || ' '::text) || foo.ort_post::text) || COALESCE(foo.ortsteil, ::text)) || COALESCE(', '::text || foo.bestimmungsland::text, ::text), ::text) AS eigentuemer
          FROM ( SELECT DISTINCT g.gml_id AS buchungsblatt_gml_id,
                   COALESCE(n.laufendenummernachdin1421, '0'::character varying) AS order1,
                   COALESCE(n.bestehtausrechtsverhaeltnissenzu, '0'::bpchar) AS order2,
                       CASE
                           WHEN COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ::text), n.artderrechtsgemeinschaft::text) IS NULL OR n.bestehtausrechtsverhaeltnissenzu IS NULL THEN ::text
                           ELSE ' '::text
                       END || repeat(' '::text, (
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 3)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END +
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 4)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END +
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 5)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END +
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 6)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END +
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 7)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END +
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 8)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END +
                       CASE split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 9)
                           WHEN '00'::text THEN 0
                           WHEN ::text THEN 0
                           ELSE 1
                       END) * 4) AS whitespace,
                   COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ::text), na.beschreibung::text) AS beschrieb,
                   COALESCE(COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ::text), na.beschreibung::text),
                       CASE
                           WHEN n.beschriebderrechtsgemeinschaft IS NULL AND n.artderrechtsgemeinschaft IS NULL THEN rtrim((((((((COALESCE(ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 1), '0'::text), ::text) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 2), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 3), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 4), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 5), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 6), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 7), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 8), '0'::text), ::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 9), '0'::text), ::text), '.'::text)
                           ELSE NULL::text
                       END) AS lfd,
                   p.akademischergrad,
                   p.vorname,
                   p.nachnameoderfirma,
                   COALESCE(', '::text || p.namensbestandteil::text, ::text) AS namensbestandteil,
                   a.strasse,
                   a.hausnummer,
                   a.postleitzahlpostzustellung,
                   a.ort_post,
                   COALESCE(', OT '::text || a.ortsteil::text, ::text) AS ortsteil,
                   a.bestimmungsland,
                   COALESCE(('geb. '::text || p.geburtsname::text) || ' '::text, ::text) || to_char(p.geburtsdatum::timestamp with time zone, 'DD.MM.YYYY'::text) AS geburtsdaten,
                   ((
                       CASE
                           WHEN mod(n.zaehler::numeric, ceil(n.zaehler::numeric)) = 0::numeric THEN to_char(n.zaehler::integer, 'FM999G999G999'::text)
                           ELSE replace(n.zaehler::text, '.'::text, ','::text)
                       END || '/'::text) ||
                       CASE
                           WHEN mod(n.nenner::numeric, ceil(n.nenner::numeric)) = 0::numeric THEN to_char(n.nenner::numeric, 'FM999G999G999G999'::text)
                           ELSE replace(n.nenner::text, '.'::text, ','::text)
                       END) || ' Anteil'::text AS anteil
                  FROM alkis.ax_buchungsblatt g
                    LEFT JOIN alkis.ax_namensnummer n ON g.gml_id = n.istbestandteilvon
                    LEFT JOIN alkis.ax_artderrechtsgemeinschaft_namensnummer na ON n.artderrechtsgemeinschaft = na.wert
                    LEFT JOIN alkis.ax_person p ON n.benennt = p.gml_id
                    LEFT JOIN alkis.ax_anschrift a ON a.gml_id = p.hat[1]
                 WHERE g.blattart = 1000 AND g.endet IS NULL AND n.endet IS NULL AND p.endet IS NULL AND a.endet IS NULL
                 ORDER BY COALESCE(n.laufendenummernachdin1421, '0'::character varying), COALESCE(n.bestehtausrechtsverhaeltnissenzu, '0'::bpchar)) foo) foo2;

View Flurstück

View Grundbuchbezirk

View Lage

View Nutzung