GLE-Postgis-Interne-Flurstückslisten: Unterschied zwischen den Versionen
(→View Buchung mit Eigentum) |
(→View Buchung ohne Eigentum) |
||
Zeile 48: | Zeile 48: | ||
Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung, wobei eigentumsrelevante Inhalte weggelassen werden. | 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. | Die Zeilenumbrüche müssen unbedingt mitgenommen werden. | ||
Version vom 20. März 2020, 14:41 Uhr
Die Views werden in ein LK-eigenes Schema "alkis_eigen" gespeichert. Bei Bedarf ändern!
Inhaltsverzeichnis
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. Die Zeilenumbrüche müssen unbedingt mitgenommen werden.
CREATE OR REPLACE 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;