
-- Views

CREATE OR REPLACE VIEW alkis.strassen AS 
 SELECT p.ogc_fid,
    l.gml_id,
    COALESCE(p.schriftinhalt, k.bezeichnung) AS schriftinhalt,
    p.art,
    p.horizontaleausrichtung AS hor,
    p.vertikaleausrichtung AS ver,
    (p.drehwinkel * (57.296)::double precision) AS winkel,
    p.wkb_geometry
   FROM ((alkis.ap_pto p
     JOIN alkis.ax_lagebezeichnungohnehausnummer l ON ((l.gml_id = ANY (p.dientzurdarstellungvon))))
     JOIN alkis.ax_lagebezeichnungkatalogeintrag k ON (((((l.kreis)::text = (k.kreis)::text) AND ((l.gemeinde)::text = (k.gemeinde)::text)) AND ((l.lage)::text = (k.lage)::text))))
  WHERE (((p.endet IS NULL) AND (l.endet IS NULL)) AND (k.endet IS NULL));
CREATE OR REPLACE VIEW alkis.s_zugehoerigkeitshaken_flurstueck AS 
 SELECT p.ogc_fid,
    p.beginnt,
    p.endet,
    p.wkb_geometry,
    (p.drehwinkel * (57.296)::double precision) AS drehwinkel,
    f.flurstueckskennzeichen,
    f.abweichenderrechtszustand
   FROM (alkis.ap_ppo p
     JOIN alkis.ax_flurstueck f ON ((f.gml_id = ANY (p.dientzurdarstellungvon))))
  WHERE ((p.art)::text = 'Haken'::text);
CREATE OR REPLACE VIEW alkis.s_zuordungspfeil_flurstueck AS 
 SELECT l.ogc_fid,
    l.beginnt,
    l.endet,
    f.abweichenderrechtszustand,
    l.wkb_geometry
   FROM (alkis.ap_lpo l
     JOIN alkis.ax_flurstueck f ON ((f.gml_id = ANY (l.dientzurdarstellungvon))))
  WHERE (((l.art)::text = 'Pfeil'::text) AND ('DKKM1000'::text ~~ ANY ((l.advstandardmodell)::text[])));
CREATE OR REPLACE VIEW alkis.s_hausnummer_gebaeude AS 
 SELECT p.ogc_fid,
    p.beginnt,
    p.endet,
    l.hausnummer,
    (p.drehwinkel * (57.296)::double precision) AS drehwinkel,
    p.wkb_geometry
   FROM (alkis.ap_pto p
     JOIN alkis.ax_lagebezeichnungmithausnummer l ON (((l.gml_id = ANY (p.dientzurdarstellungvon)) AND (l.endet IS NULL))))
  WHERE ((p.art)::text = 'HNR'::text);
	
CREATE OR REPLACE VIEW alkis.lk_grenzpunkte
 AS
 SELECT o.ogc_fid,
    o.gml_id,
    o.punktkennung,
    ltrim(to_char("substring"(o.punktkennung::text, 1, 9)::integer, '999 99 99 99'::text), ' '::text) AS nbz,
    ltrim("substring"(o.punktkennung::text, 10, 6), '0'::text) AS pnr,
    o.beginnt AS o_beginnt,
    o.endet AS o_endet,
    d.bezeichnung AS zustaendige_stelle,
    o.zustaendigestelle_stelle,
    o.zeitpunktderentstehung,
        CASE
            WHEN o.festgestelltergrenzpunkt::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS festgestelltergrenzpunkt,
    da.bezeichnung AS ausgesetzteabmarkung_stelle,
    l.beschreibung AS verm_bedeutung,
    o.abmarkung_marke,
    ba.beschreibung AS bemerkung_zurabmarkung,
    o.bemerkungzurabmarkung,
    o.zeigtauf,
    array_to_string(o.sonstigeeigenschaft, ', '::text) AS sonstigeeigenschaft,
    o.relativehoehe,
    o.besonderepunktnummer,
    o.zeigtaufexternes_art AS o_zeigtaufexternes_art,
    o.zeigtaufexternes_name AS o_zeigtaufexternes_name,
    o.zeigtaufexternes_uri AS o_zeigtaufexternes_uri,
    p.gml_id AS ax_punktortta_gml_id,
    p.beginnt AS p_beginnt,
    p.endet AS p_endet,
    "substring"(st_astext(p.wkb_geometry), '\((.*)\)'::text) AS "position",
    ks.beschreibung AS koordinatenstatus_beschreibung,
    p.koordinatenstatus,
    m.beschreibung AS punktgenauigkeit,
    p.genauigkeitsstufe,
    n.beschreibung AS punktvertrauenswuerdigkeit,
    p.vertrauenswuerdigkeit,
    e.beschreibung AS datenerhebung,
    array_to_string(p.processstep_ax_datenerhebung_punktort, ','::text) AS source_description,
    p.zeigtaufexternes_art AS p_zeigtaufexternes_art,
    p.zeigtaufexternes_name AS p_zeigtaufexternes_name,
    p.zeigtaufexternes_uri AS p_zeigtaufexternes_uri,
    ( SELECT string_agg(concat(COALESCE(u.beschreibung, 'Erhebung'::character varying), ': ', to_char(u.zeitpunkt, 'DD.MM.YYYY'::text)), ', '::text) AS string_agg
           FROM UNNEST(p.processstep_ax_li_processstep_punktort_description, p.processstep_datetime) u(beschreibung, zeitpunkt)
          WHERE u.zeitpunkt IS NOT NULL) AS erhebung_berechnung,
        CASE
            WHEN p.lagezuverlaessigkeit::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS lagezuverlaessigkeit,
    p.ueberpruefungsdatum,
    p.hinweise,
        CASE
            WHEN p.kartendarstellung::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS kartendarstellung,
    p.wkb_geometry
   FROM alkis.ax_grenzpunkt o
     JOIN alkis.ax_punktortta p ON o.gml_id = ANY (p.istteilvon)
     JOIN alkis.ax_marke l ON l.wert = o.abmarkung_marke
     LEFT JOIN alkis.ax_genauigkeitsstufe_punktort m ON m.wert = p.genauigkeitsstufe
     LEFT JOIN alkis.ax_vertrauenswuerdigkeit_punktort n ON n.wert = p.vertrauenswuerdigkeit
     LEFT JOIN alkis.ax_bemerkungzurabmarkung_grenzpunkt ba ON o.bemerkungzurabmarkung = ba.wert
     LEFT JOIN alkis.ax_datenerhebung_punktort e ON e.wert = ANY (p.processstep_ax_datenerhebung_punktort::integer[])
     LEFT JOIN alkis.ax_dienststelle d ON o.zustaendigestelle_land::text = d.land::text AND o.zustaendigestelle_stelle::text = d.stelle::text
     LEFT JOIN alkis.ax_dienststelle da ON o.zustaendigestelle_land::text = da.land::text AND o.ausgesetzteabmarkung_stelle::text = da.stelle::text
     LEFT JOIN alkis.ax_koordinatenstatus_punktort ks ON p.koordinatenstatus = ks.wert
  WHERE d.endet IS NULL AND da.endet IS NULL;

CREATE OR REPLACE VIEW alkis.lk_so_punkte AS 
 SELECT o.ogc_fid,
    o.beginnt,
    o.endet,
    o.punktkennung,
    o.sonstigeeigenschaft,
    o.vermarkung_marke,
    l.beschreibung AS verm_bedeutung,
    p.genauigkeitsstufe,
    m.beschreibung AS punktgenauigkeit,
    p.vertrauenswuerdigkeit,
    n.beschreibung AS bedeutung,
    st_astext(p.wkb_geometry) AS koord,
    p.wkb_geometry
   FROM ((((alkis.ax_sonstigervermessungspunkt o
     JOIN alkis.ax_punktortau p ON ((o.gml_id = ANY (p.istteilvon))))
     JOIN alkis.ax_marke l ON ((l.wert = o.vermarkung_marke)))
     LEFT JOIN alkis.ax_genauigkeitsstufe_punktort m ON ((m.wert = p.genauigkeitsstufe)))
     LEFT JOIN alkis.ax_vertrauenswuerdigkeit_punktort n ON ((n.wert = p.vertrauenswuerdigkeit)));

CREATE OR REPLACE VIEW alkis.lk_sp
 AS
 SELECT o.ogc_fid,
    o.gml_id,
    o.punktkennung,
    ltrim(to_char("substring"(o.punktkennung::text, 1, 9)::integer, '999 99 99 99'::text), ' '::text) AS nbz,
    ltrim("substring"(o.punktkennung::text, 10, 6), '0'::text) AS pnr,
    o.beginnt AS o_beginnt,
    o.endet AS o_endet,
    d.bezeichnung AS zustaendige_stelle,
    o.zustaendigestelle_stelle,
    l.beschreibung AS verm_bedeutung,
    o.vermarkung_marke,
    ap.gml_id AS ap_gml_id,
    array_to_string(o.sonstigeeigenschaft, ', '::text) AS sonstigeeigenschaft,
    o.relativehoehe,
    o.zeigtaufexternes_art AS o_zeigtaufexternes_art,
    o.zeigtaufexternes_name AS o_zeigtaufexternes_name,
    o.zeigtaufexternes_uri AS o_zeigtaufexternes_uri,
    p.gml_id AS ax_punktortta_gml_id,
    p.beginnt AS p_beginnt,
    p.endet AS p_endet,
    "substring"(st_astext(p.wkb_geometry), '\((.*)\)'::text) AS "position",
    ks.beschreibung AS koordinatenstatus_beschreibung,
    p.koordinatenstatus,
    m.beschreibung AS punktgenauigkeit,
    p.genauigkeitsstufe,
    n.beschreibung AS punktvertrauenswuerdigkeit,
    p.vertrauenswuerdigkeit,
    e.beschreibung AS datenerhebung,
    array_to_string(p.processstep_ax_datenerhebung_punktort, ','::text) AS source_description,
    p.zeigtaufexternes_art AS p_zeigtaufexternes_art,
    p.zeigtaufexternes_name AS p_zeigtaufexternes_name,
    p.zeigtaufexternes_uri AS p_zeigtaufexternes_uri,
    ( SELECT string_agg(concat(COALESCE(u.beschreibung, 'Erhebung'::character varying), ': ', to_char(u.zeitpunkt, 'DD.MM.YYYY'::text)), ', '::text) AS string_agg
           FROM UNNEST(p.processstep_ax_li_processstep_punktort_description, p.processstep_datetime) u(beschreibung, zeitpunkt)
          WHERE u.zeitpunkt IS NOT NULL) AS erhebung_berechnung,
        CASE
            WHEN p.lagezuverlaessigkeit::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS lagezuverlaessigkeit,
    p.ueberpruefungsdatum,
    p.hinweise,
        CASE
            WHEN p.kartendarstellung::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS kartendarstellung,
    p.wkb_geometry
   FROM alkis.ax_sicherungspunkt o
     JOIN alkis.ax_punktortau p ON o.gml_id = ANY (p.istteilvon)
     JOIN alkis.ax_marke l ON l.wert = o.vermarkung_marke
     LEFT JOIN alkis.ax_genauigkeitsstufe_punktort m ON m.wert = p.genauigkeitsstufe
     LEFT JOIN alkis.ax_vertrauenswuerdigkeit_punktort n ON n.wert = p.vertrauenswuerdigkeit
     LEFT JOIN alkis.ax_datenerhebung_punktort e ON e.wert = ANY (p.processstep_ax_datenerhebung_punktort::integer[])
     LEFT JOIN alkis.ax_dienststelle d ON o.zustaendigestelle_land::text = d.land::text AND o.zustaendigestelle_stelle::text = d.stelle::text
     LEFT JOIN alkis.ax_koordinatenstatus_punktort ks ON p.koordinatenstatus = ks.wert
     LEFT JOIN alkis.ax_aufnahmepunkt ap ON o.gml_id = ANY (ap.hat)
  WHERE d.endet IS NULL;
	
CREATE OR REPLACE VIEW alkis.lk_ap
 AS
 SELECT o.ogc_fid,
    o.gml_id,
    o.punktkennung,
    ltrim(to_char("substring"(o.punktkennung::text, 1, 9)::integer, '999 99 99 99'::text), ' '::text) AS nbz,
    ltrim("substring"(o.punktkennung::text, 10, 6), '0'::text) AS pnr,
    o.beginnt AS o_beginnt,
    o.endet AS o_endet,
    d.bezeichnung AS zustaendige_stelle,
    o.zustaendigestelle_stelle,
    l.beschreibung AS verm_bedeutung,
    o.vermarkung_marke,
    o.hat,
    array_to_string(o.sonstigeeigenschaft, ', '::text) AS sonstigeeigenschaft,
    o.relativehoehe,
    o.zeigtaufexternes_art AS o_zeigtaufexternes_art,
    o.zeigtaufexternes_name AS o_zeigtaufexternes_name,
    o.zeigtaufexternes_uri AS o_zeigtaufexternes_uri,
    p.gml_id AS ax_punktortta_gml_id,
    p.beginnt AS p_beginnt,
    p.endet AS p_endet,
    "substring"(st_astext(p.wkb_geometry), '\((.*)\)'::text) AS "position",
    ks.beschreibung AS koordinatenstatus_beschreibung,
    p.koordinatenstatus,
    m.beschreibung AS punktgenauigkeit,
    p.genauigkeitsstufe,
    n.beschreibung AS punktvertrauenswuerdigkeit,
    p.vertrauenswuerdigkeit,
    e.beschreibung AS datenerhebung,
    array_to_string(p.processstep_ax_datenerhebung_punktort, ','::text) AS source_description,
    p.zeigtaufexternes_art AS p_zeigtaufexternes_art,
    p.zeigtaufexternes_name AS p_zeigtaufexternes_name,
    p.zeigtaufexternes_uri AS p_zeigtaufexternes_uri,
    ( SELECT string_agg(concat(COALESCE(u.beschreibung, 'Erhebung'::character varying), ': ', to_char(u.zeitpunkt, 'DD.MM.YYYY'::text)), ', '::text) AS string_agg
           FROM UNNEST(p.processstep_ax_li_processstep_punktort_description, p.processstep_datetime) u(beschreibung, zeitpunkt)
          WHERE u.zeitpunkt IS NOT NULL) AS erhebung_berechnung,
        CASE
            WHEN p.lagezuverlaessigkeit::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS lagezuverlaessigkeit,
    p.ueberpruefungsdatum,
    p.hinweise,
        CASE
            WHEN p.kartendarstellung::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS kartendarstellung,
    p.wkb_geometry
   FROM alkis.ax_aufnahmepunkt o
     JOIN alkis.ax_punktortau p ON o.gml_id = ANY (p.istteilvon)
     JOIN alkis.ax_marke l ON l.wert = o.vermarkung_marke
     LEFT JOIN alkis.ax_genauigkeitsstufe_punktort m ON m.wert = p.genauigkeitsstufe
     LEFT JOIN alkis.ax_vertrauenswuerdigkeit_punktort n ON n.wert = p.vertrauenswuerdigkeit
     LEFT JOIN alkis.ax_datenerhebung_punktort e ON e.wert = ANY (p.processstep_ax_datenerhebung_punktort::integer[])
     LEFT JOIN alkis.ax_dienststelle d ON o.zustaendigestelle_land::text = d.land::text AND o.zustaendigestelle_stelle::text = d.stelle::text
     LEFT JOIN alkis.ax_koordinatenstatus_punktort ks ON p.koordinatenstatus = ks.wert
  WHERE d.endet IS NULL;

CREATE OR REPLACE VIEW alkis.lk_gebaeudepunkte
 AS
 SELECT o.ogc_fid,
    o.gml_id,
    o.punktkennung,
    ltrim(to_char("substring"(o.punktkennung::text, 1, 9)::integer, '999 99 99 99'::text), ' '::text) AS nbz,
    ltrim("substring"(o.punktkennung::text, 10, 6), '0'::text) AS pnr,
    o.beginnt AS o_beginnt,
    o.endet AS o_endet,
    d.bezeichnung AS zustaendige_stelle,
    o.zustaendigestelle_stelle,
    o.zeigtaufexternes_art,
    o.zeigtaufexternes_name,
    o.zeigtaufexternes_uri,
    o.sonstigeeigenschaft,
    p.gml_id AS ax_punktortag_gml_id,
    p.beginnt AS p_beginnt,
    p.endet AS p_endet,
    "substring"(st_astext(p.wkb_geometry), '\((.*)\)'::text) AS "position",
    ks.beschreibung AS koordinatenstatus_beschreibung,
    p.koordinatenstatus,
    m.beschreibung AS punktgenauigkeit,
    p.genauigkeitsstufe,
    n.beschreibung AS punktvertrauenswuerdigkeit,
    p.vertrauenswuerdigkeit,
    e.beschreibung AS datenerhebung,
    array_to_string(p.processstep_ax_datenerhebung_punktort, ','::text) AS source_description,
    p.zeigtaufexternes_art AS p_zeigtaufexternes_art,
    p.zeigtaufexternes_name AS p_zeigtaufexternes_name,
    p.zeigtaufexternes_uri AS p_zeigtaufexternes_uri,
    ( SELECT string_agg(concat(COALESCE(u.beschreibung, 'Erhebung'::character varying), ': ', to_char(u.zeitpunkt, 'DD.MM.YYYY'::text)), ', '::text) AS string_agg
           FROM UNNEST(p.processstep_ax_li_processstep_punktort_description, p.processstep_datetime) u(beschreibung, zeitpunkt)
          WHERE u.zeitpunkt IS NOT NULL) AS erhebung_berechnung,
        CASE
            WHEN p.lagezuverlaessigkeit::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS lagezuverlaessigkeit,
    p.ueberpruefungsdatum,
    p.hinweise,
        CASE
            WHEN p.kartendarstellung::text = 'true'::text THEN 'Ja'::text
            ELSE 'Nein'::text
        END AS kartendarstellung,
    p.wkb_geometry
   FROM alkis.ax_besonderergebaeudepunkt o
     JOIN alkis.ax_punktortag p ON o.gml_id = ANY (p.istteilvon)
     LEFT JOIN alkis.ax_genauigkeitsstufe_punktort m ON m.wert = p.genauigkeitsstufe
     LEFT JOIN alkis.ax_vertrauenswuerdigkeit_punktort n ON n.wert = p.vertrauenswuerdigkeit
     LEFT JOIN alkis.ax_datenerhebung_punktort e ON e.wert = ANY (p.processstep_ax_datenerhebung_punktort::integer[])
     LEFT JOIN alkis.ax_dienststelle d ON o.zustaendigestelle_land::text = d.land::text AND o.zustaendigestelle_stelle::text = d.stelle::text
     LEFT JOIN alkis.ax_koordinatenstatus_punktort ks ON p.koordinatenstatus = ks.wert
  WHERE d.endet IS NULL;

DROP VIEW IF EXISTS alkis.lk_gebaeude;

CREATE OR REPLACE VIEW alkis.lk_gebaeude
 AS
SELECT o.ogc_fid,
    o.gml_id,
    o.beginnt,
    o.endet,
    o.gebaeudefunktion,
    p.beschreibung AS bezeichner,
    w.wert AS weiterefunktion,
    o.name,
    o.zustand,
    z.beschreibung AS gebaeudezustand,
    o.hoehe as objekthoehe,
    o.lagezurerdoberflaeche,
    o.dachform,
    d.beschreibung AS dach_bezeichner,
    o.hochhaus,
    o.processstep_ax_datenerhebung[1] AS ax_datenerhebung,
    da.beschreibung AS herkunft,
    o.wkb_geometry
   FROM alkis.ax_gebaeude o
     LEFT JOIN alkis.ax_gebaeudefunktion p ON p.wert = o.gebaeudefunktion
     LEFT JOIN alkis.ax_dachform d ON d.wert = o.dachform
     LEFT JOIN alkis.ax_zustand_gebaeude z ON z.wert = o.zustand
     LEFT JOIN alkis.ax_weitere_gebaeudefunktion w ON w.wert = ANY (o.weiteregebaeudefunktion)
     LEFT JOIN alkis.ax_datenerhebung da ON da.wert = o.processstep_ax_datenerhebung[1]::integer;


CREATE OR REPLACE VIEW alkis.lk_grabloch AS 
 SELECT gr.ogc_fid,
    gr.gml_id,
    gr.gml_id AS identifier,
    gr.beginnt,
    gr.endet,
    gr.advstandardmodell,
    gr.anlass,
    gr.zeigtaufexternes_art AS art,
    gr.zeigtaufexternes_name AS name,
    gr.bedeutung,
    be.beschreibung,
    gr.ingemarkung_land,
    gr.ingemarkung_gemarkungsnummer,
    gr.nummerdesgrablochs,
    gr.wkb_geometry AS the_geom
   FROM alkis.ax_grablochderbodenschaetzung gr,
    alkis.ax_bedeutung_grablochderbodenschaetzung be
  WHERE (be.wert = ANY (gr.bedeutung));
CREATE OR REPLACE VIEW alkis.lk_muster_vergleichsstueck AS 
 SELECT mu.ogc_fid,
    mu.gml_id,
    mu.gml_id AS identifier,
    mu.beginnt,
    mu.endet,
    mu.advstandardmodell,
    mu.anlass,
    mu.merkmal,
    me.beschreibung AS gruppe,
    mu.nummer,
    mu.nutzungsart,
    ku.beschreibung AS kultur,
    mu.bodenart,
    art.beschreibung,
    mu.zustandsstufe,
    mu.bodenstufe,
    z.beschreibung AS zustandsstufe_beschreibung,
    bs.beschreibung AS bodenstufe_beschreibung,
    mu.entstehungsart,
    mu.klimastufe,
    mu.wasserverhaeltnisse,
    e1.beschreibung AS entstehungsart_beschreibung,
    e2.beschreibung AS klimastufe_beschreibung,
    e3.beschreibung AS wasserverhaeltnisse_beschreibung,
    mu.bodenzahlodergruenlandgrundzahl,
    mu.ackerzahlodergruenlandzahl,
    mu.wkb_geometry AS the_geom
   FROM (((((alkis.ax_musterundvergleichsstueck mu
     LEFT JOIN alkis.ax_merkmal_musterundvergleichsstueck me ON ((mu.merkmal = me.wert)))
     LEFT JOIN alkis.ax_bodenart_bodenschaetzung art ON ((mu.bodenart = art.wert)))
     LEFT JOIN alkis.ax_nutzungsart_bodenschaetzung ku ON ((mu.nutzungsart = ku.wert)))
     LEFT JOIN alkis.ax_zustandsstufe z ON z.wert = mu.zustandsstufe
     LEFT JOIN alkis.ax_bodenstufe bs ON bs.wert = mu.bodenstufe 
     )
     LEFT JOIN alkis.ax_entstehungsart e1 ON e1.wert = mu.entstehungsart 
     LEFT JOIN alkis.ax_klimastufe e2 ON e2.wert = mu.klimastufe
     LEFT JOIN alkis.ax_wasserverhaeltnisse e3 ON e3.wert = mu.wasserverhaeltnisse

     );
CREATE OR REPLACE VIEW alkis.lk_nutzungen AS 
 SELECT n.gid,
    n.gml_id,
    n.beginnt,
    n.endet,
    n.werteart1,
    n.werteart2,
    n.info,
        CASE
            WHEN (n.info = 1000) THEN 'Art der Bebauung - Offen'::text
            WHEN (n.info = 2000) THEN 'Art der Bebauung - Geschlossen'::text
            ELSE NULL::text
        END AS info_bezeichner,
    n.zustand,
    n.name,
    n.bezeichnung,
    ((nas.nutzungsartengruppe::text || lpad(nas.nutzungsart::text, 2, '0')) || lpad(nas.untergliederung1::text, 2, '0')) || lpad(nas.untergliederung2::text, 2, '0') AS nutzungsartschluessel,
    nag.bereich,
    nag.gruppe AS nutzungsartengruppe,
    na.nutzungsart,
    nu1.untergliederung1,
    nu2.untergliederung2,
    nas.nutzungsartengruppe AS nutzungsartengruppeschl,
    nas.nutzungsart AS nutzungsartschl,
    nas.untergliederung1 AS untergliederung1schl,
    nas.untergliederung2 AS untergliederung2schl,
    nas.objektart AS alkis_objart,
    nas.attributart1 AS alkis_attributart1,
    nas.attributart2 AS alkis_attributart2,
    round(st_area(n.wkb_geometry)) AS flaeche,
    n.datumderletztenueberpruefung,
    n.herkunft_source_source_ax_datenerhebung AS datenerhebung_art,
    n.wkb_geometry AS the_geom
   FROM (((((alkis.n_nutzung n
     LEFT JOIN alkis.n_nutzungsartenschluessel nas ON ((((n.nutzungsartengruppe = nas.nutzungsartengruppe) AND (n.werteart1 = nas.werteart1)) AND (n.werteart2 = nas.werteart2))))
     LEFT JOIN alkis.n_nutzungsartengruppe nag ON ((nas.nutzungsartengruppe = nag.schluessel)))
     LEFT JOIN alkis.n_nutzungsart na ON (((nas.nutzungsartengruppe = na.nutzungsartengruppe) AND (nas.nutzungsart = na.schluessel))))
     LEFT JOIN alkis.n_untergliederung1 nu1 ON ((((nas.nutzungsartengruppe = nu1.nutzungsartengruppe) AND (nas.nutzungsart = nu1.nutzungsart)) AND (nas.untergliederung1 = nu1.schluessel))))
     LEFT JOIN alkis.n_untergliederung2 nu2 ON (((((nas.nutzungsartengruppe = nu2.nutzungsartengruppe) AND (nas.nutzungsart = nu2.nutzungsart)) AND (nas.untergliederung1 = nu2.untergliederung1)) AND (nas.untergliederung2 = nu2.schluessel))));

