Postgres - Generieren Sie dynamisch mehrere Zeilen und Spalten und verbinden Sie sie mit einer vorhandenen Tabelle

AnuC

Ich versuche, eine Oracle-Abfrage in Postgres zu konvertieren.

Die Oracle-Abfrage verwendet Folgendes, um dynamische tabellenähnliche Daten zu generieren:

SELECT ROWNUM TYPE_ID, regexp_substr('NED,SED,ZED,MED', '[^,]+', 1, LEVEL) TYPE
FROM DUAL
CONNECT BY regexp_substr('NED,SED,ZED,MED', '[^,]+', 1, LEVEL) IS NOT NULL

Output:
TYPE_ID,TYPE
1,NED
2,SED
3,ZED
4,MED

Betrachten Sie die Beispieltabelle:

create table details(
Title Varchar,
Misc Varchar
);

insert into details values ('DBA','5 years');

Das ist die ganze Abfrage:

select /*ACC DATA*/ (case when ACC.TYPE_ID= 4 then null else
Title end)  Job_title,
ACC.* from DUAL,
(SELECT ROWNUM TYPE_ID, regexp_substr('NED,SED,ZED,MED', '[^,]+', 1, LEVEL) TYPE
FROM DUAL
CONNECT BY regexp_substr('NED,SED,ZED,MED', '[^,]+', 1, LEVEL) IS NOT NULL) ACC,
details

Output looks like this:
JOB_TITLE,TYPE_ID,TYPE
DBA,1,NED
DBA,2,SED
DBA,3,ZED

Die Abfrage gibt also jede Zeile der Detailtabelle dreimal zurück, mit TYPE_ID als 1,2,3 und TYPE als NED,SED,ZED.

Wie kann dies in Postgres 11.5 erreicht werden?

Sicherer

Wie Sie festgestellt haben, verfügt Postres nicht über das nützliche "connect by ...". Aber es hat andere ebenso nützliche Funktionen. In diesem Fall: (Siehe Geige )

Beide analysieren die Zeichenfolge in einzelne Elemente. Leider bieten beide keine Enumeration an, jedoch ist sie leicht von der Fensterfunktion row_number zu erhalten. Ihre Oracle-Anweisung wird also (type ist ein reserviertes Wort in Postgres und würde einen Fehler generieren, also wechsle ich zu type_val.)

select row_number() over() type_id,type_val 
  from (select unnest(string_to_array('NED,SED,ZED,MED',',')) type_val ) sl 

Damit ist es ein einfacher Schritt, dies mit Ihrer Detailtabelle zu verbinden, um das zu erhalten, was Sie wollen.

with split_list(type_id,type_val) as
     ( select row_number() over() type_id,type_val 
         from (select unnest(string_to_array('NED,SED,ZED,MED',',')) type_val ) sl 
     )         
select title, type_id, type_val
  from details
 cross join split_list
 where type_id != 4; 

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Fügen Sie einer Tabelle mehrere Spalten und Zeilen hinzu

Verwandeln Sie Zeilen in Spalten und verbinden Sie sie dann links mit einer anderen Abfrage

Konvertieren Sie mehrere Zeilen in mehrere Zeilen mit vielen Spalten und Namen aus der ersten Tabelle

Teilen Sie mehrere Felder oder Spalten einer einzelnen Zeile und erstellen Sie mit Scala mehrere Zeilen

Verbinden Sie zwei Tabellen mit Zeilen und Spalten und summieren Sie sie

Verschmelzen Sie Zeilen basierend auf mehreren Spalten und verbinden Sie mehrere Spalten

So lassen Sie Javascript mehrere Spalten und Zeilen in einer Tabelle durchsuchen

Analysieren Sie JSON und binden Sie an dynamisch erstellte Zeilen und Spalten der HTML-Tabelle

So wählen Sie den Maximalwert aus Zeilen aus und verbinden ihn mit einer anderen Tabelle

SQLite: Durchsuchen Sie die Tabelle der Schlüsselwörter mit separaten Zeilen und verbinden Sie mehrere Tabellen

Wählen Sie Zeilen dynamisch aus und verbinden Sie sie mit postgresql

Kombinieren Sie mehrere Zeilen und Spalten in einer einzigen Zeile in SQL

Erstellen Sie eine Tabelle mit angegebenen Spalten und Zeilen in Jquery

MySQL, verbinden Sie eine Tabelle und haben Sie mehrere Bedingungen aus verschiedenen Zeilen

Verbinden Sie mehrere Spalten und verbinden Sie sich in einer der ganzzahligen Spalten, indem Sie die minimale Differenz auswählen

Wählen Sie Zeilen aus einer Tabelle aus und verwenden Sie mehrere miteinander verbundene Spalten für die Bestellung

So erstellen Sie mehrere Spalten und Zeilen mit Flexbox

So fügen Sie Daten mit einer vorhandenen Tabelle und neuen Spalten in eine temporäre Tabelle ein new

Verbinden Sie sich mit einer zweiten Tabelle, die mehrere Datensätze enthält, und nehmen Sie die neueste

Bilden Sie die Summe einer Spalte und verbinden Sie sie mit einer anderen Tabelle

Wenden Sie eine bedingte Formatierung an, um mehrere Zeilen und Spalten mit einer Referenzspalte zu vergleichen

Wie man mehrere Spalten in einer Tabelle zählt und sie mit PHP anzeigt

Fragen Sie MySql ab und verbinden Sie mehrere Spalten

MySQL - Verbinden Sie zwei Tabellen in einer Ansicht, nehmen Sie Zeilen aus einer und verwandeln Sie sie in Spalten

SQL Server. Verbinden Sie zwei Tabellen in einer Ansicht, nehmen Sie Zeilen aus einer und verwandeln Sie sie in Spalten

Wählen Sie die ersten 100 Zeilen in einer Tabelle mit 10000 Datensätzen aus und sichern Sie sie - postgres sql

Erstellen Sie mit Spring Data Cassandra einen Schlüsselbereich, eine Tabelle und generieren Sie Tabellen dynamisch

Nehmen Sie mehrere Zeilen aus einer SQLite-Datenbank, kombinieren Sie Zeilen mit demselben Datum und drucken Sie sie in einer Tabelle

Verbinden Sie zwei Tabellen und transponieren Sie dann Zeilen aus einer Tabelle als Spaltennamen

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv