Announcement

Collapse
No announcement yet.

Anzahl Datensätze nicht leere Felder bestimmen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzahl Datensätze nicht leere Felder bestimmen

    Hallo zusammen,

    ich habe eine umfangreiche Tabelle mit sehr vielen Feldern.
    Nun möchte ich für jedes Feld der Tabelle die Anzahl der Datensätze ermitteln für die das Feld nicht leer ist. Das Ergebnis soll also beispielsweise für eine Tabelle Person so vorliegen

    Feldname Anzahl
    -----------------------
    Name 10 -> Für 10 Datensätze in Tabelle Person ist das Feld Name gesetzt
    Vorname 8
    ... alle weiteren Felder

    Mit :
    Select Count (*) from PERSON WHERE NAME is not null
    kann ich die zwar einzelnen Spalten abfragen, dies möchte ich aber aufgrund der vielen Felder - wohl am besten in einem PL/SQL-Skript - sequenziell automatisiert ablaufen lassen.

    Kann mir hier jemand helfen?
    VIELEN DANK

  • #2
    [highlight=sql]
    SELECT COUNT(FeldName1), COUNT(FeldName2)
    FROM Tabelle
    [/highlight]

    Normalerweise werden nur Felder gezählt in denen nicht NULL steht. Mit dem Parameter gibst Du an welche Spalte er zählen soll

    Comment


    • #3
      Originally posted by fanderlf View Post
      [highlight=sql]
      SELECT COUNT(FeldName1), COUNT(FeldName2)
      FROM Tabelle
      [/highlight]

      Normalerweise werden nur Felder gezählt in denen nicht NULL steht. Mit dem Parameter gibst Du an welche Spalte er zählen soll
      Ok, danke. Das entspricht schon sehr dem, was ich möchte.
      Nur möchte ich mir die Tipparbeit ersparen, alle Felder (sind weit über 100) angegeben zu müssen. Daher dachte ich mir, dass ich das automatisieren kann und folgende Abfrage, welcher mir alle Feldnamen zurückliefert, einzubauen:
      select column_name from user_tab_columns where table_name = 'PERSON'
      Ich weiß nicht, ob ich hier PL/SQL mit einer Loop benötige?
      Kann mir hierzu jemand weiterhelfen?

      Comment


      • #4
        Bevor du hier anfängst, etwas Dynamisches zu basteln, ist es doch sicher einfacher und schneller (auch beim Abarbeiten), die Beschreibung deiner Tabelle in einen Editor zu kopieren und daraus die entsprechenden Count(spaltenname)-Einträge zu erstellen.

        Gruß

        Ralf

        Comment


        • #5
          Zumal dynamisch mit SQL alleine nicht funktionieren wird. Da muss man dann auf PL/SQL gehen

          Comment


          • #6
            Originally posted by fanderlf View Post
            Zumal dynamisch mit SQL alleine nicht funktionieren wird. Da muss man dann auf PL/SQL gehen
            Ja, genau. Das war ja mein Gedanke. Dachte jemand hätte vielleicht ad hoc eine Lösung mit einem Cursor o.ä. in PLSQL

            Nun gut, habe es jetzt so gemacht, wie ralfb und fanderlf beschrieben haben. War zwar etwas Hin und Herkopiererei aber hat geklappt. Dankt euch!

            Comment

            Working...
            X