ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
366
366
EMPFEHLEN
-
19.01.12 11:25 #1
- Registriert seit
- Feb 2007
- Beiträge
- 75
Hallo!
Ich habe eine externe Tabelle:
rownumber, cola,colb, colc, cold, cole, colf, ......, colz
Sind alles varchar2 (255).
Die externe Tabelle zeigt auf ein CSV File und rownumber gibt den Zeilenindex im CSV file an.
Nun weiss ich, dass where rownumber=3 habe ich ab cole immer eine Stringkombination aus Monat und Jahr. Das habe ich solange bis da Total steht, dann ist fertig.
Hier ein Beispiel:
cole, colf, colg, colh
jan -11, feb -11, mar -11, Total
Ich möchte nun erkennen welche Spalten mich zu interessieren haben (in diesem beispiel cole, colf, colg) und dann möchte ich das nummernformat yyyymm haben. (also jan -11 -> 201101).
Wie gehe ich sowas am besten an?
Regex, mapping Tabelle, cases, ....
Danke für eure Hinweise & Gruss
BBBB
-
Huh, eine komplizierte Beschreibung die ich auch nach 3maligem Durchlesen noch ncith wirklich verstanden habe.
Also, so wie ich das verstehe, ergibt das eine Tabelle im Format
Code :1 2 3
cole | colf | colg | colh --------|---------|---------------- jan -11 | feb -11 | mar -11 | Total
Dich interessieren jetzt die Resultate cole bis colh. Wie soll das AUsgegeben werden? Am besten zuerst alles Untereinander setzen und dann filtern
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
-- Stelle sicher dass das englische Datumsformat eingestellt ist. Nur so wird aus 'mar' auch 03 ALTER SESSION SET NLS_DATE_LANGUAGE = 'ENGLISH'; WITH --simuliere die Daten mydata AS ( SELECT 3 AS rownumber, 'test 3' AS cola, 'jan -11' AS cole, 'mar -11' AS colf, 'feb -11' AS colg, 'Total' AS colh, '' AS coli FROM dual UNION ALL SELECT 4 AS rownumber, 'test 4' AS cola, 'feb -11' AS cole, 'mar -11' AS colf, 'Total' AS colg, '' AS colh, '' AS coli FROM dual ) -- Das eigebtliche Query SELECT rownumber, cola, -- 'jan -11' zuerst in ein Datum wandeln und dieses dann wieder in einen Text: '201101' TO_CHAR(TO_DATE(col_value, 'MON -YY'), 'YYYYMM') AS my_date, col_name FROM ( SELECT rownumber, cola, col_value, col_name FROM -- Schreibe das Format um ( -- cole SELECT rownumber, cola, cole AS col_value, 'cole' AS col_name FROM mydata -- colf UNION ALL SELECT rownumber, cola, colf AS col_value, 'colf' AS col_name FROM mydata -- colg UNION ALL SELECT rownumber, cola, colg AS col_value, 'colg' AS col_name FROM mydata -- colh UNION ALL SELECT rownumber, cola, colh AS col_value, 'colh' AS col_name FROM mydata -- coli UNION ALL SELECT rownumber, cola, coli AS col_value, 'coli' AS col_name FROM mydata ORDER BY rownumber, col_name ) tab WHERE -- Alle Null und Totals ausfiltern NOT NVL(col_value, 'Total') = 'Total' ) uniondataM
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
19.01.12 17:17 #3
- Registriert seit
- Jul 2008
- Ort
- Hinter dem Mond gleich links
- Beiträge
- 735
Also wenn ich ihn richtig verstanden habe, will er per Abfrage herausfinden, in welcher Spalte das "Total" steht, und als Ergebnis will er dann eben Spalte 5 bis SpalteMitTotal-1 haben, welches dann umformatiert dargestellt werden soll.
Die Frage, die sich mir jetzt stellt, ist das nur für Zeile 3, oder für alle Zeilen in dem CSV?Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein
Code vb:1
If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")
-
19.01.12 21:30 #4
- Registriert seit
- Feb 2007
- Beiträge
- 75
@yaslaw
das macht schon ziemlich genau was ich mir so vorgestellt habe. vielen dank. ich werde versuchen das ganze noch generisch zu gestalten, also so, dass das select col nur einmal geschrieben werden muss und per for loop für jede spalte ausgeführt wird. ich melde mich nochmals falls ich das dann habe.
@zvoni
genau, das ist was ich wollte und das liefert der code vom kollegen ja bereits. ja das soll nur für zeile 3 des csv gemacht werden. info: das csv ist eigentlich ein excel, das konvertiert wurde. und es einthält in einer header row (=3) eben die jahres monats zahlen.
Ähnliche Themen
-
[Oracle] Sammlung interessanter Oracle Blogs
Von Thomas Darimont im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 16.02.10, 12:34 -
[Oracle 8i] An Oracle 8i über Vb und ODBC anmelden/DB bearbeiten
Von Animal21 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 02.06.08, 11:00 -
[Oracle] Sehr viele interessante Präsentationen zum Thema Oracle und Sicherheit
Von Thomas Darimont im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 24.01.07, 19:02 -
[Oracle] - Suche Forum was unter Oracle funktioniert.
Von PuN1sher im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 11.04.06, 13:53 -
[Oracle] Genaue Version des Oracle Servers ermitteln
Von Thomas Darimont im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 25.01.05, 20:42





Zitieren

Login





