Liebe Leute, ich hab ein Problem. Und zwar hauptsächlich dass ich mich nicht auskenn
Ich habe eine Datenbank, deren Definition ich nicht kenne (Fremdprodukt). Da möchte ich mit einem Auswertungsgenerator auf SQL-Basis eine Tabelle auslesen.
Und da gibts eine Spalte, die sich wehrt ...
So viel hab ich mir schon zusammengereimt:
Der Primary Key ist MAN, AK, PNR, VERTNR, P_LFD
Dann gibts \'normale\' Spalten (P_DATE,P_TIME,P_UID,ZDAT)
Und meinen \'Freund\' P_DATA, die Spalte wird in meinem Programm als \"Lange Zeichenkette\" beschrieben, was immer das heissen mag. Es gibt für P_DATA mehrere Inhalte, die nicht mit einem Key versehen sind. Der Sinn ist mir schon klar: es handelt sich um ein Änderungsprotokoll, und da werden halt mehrere Inhalte geändert (und im Client in einem eigenen Fenster untereinander angezeigt).
So.
Vom SQL wird P_DATA jetzt nicht als \'normale\' Spalte selektiert, sondern in jeweils einer neuen Zeile - ohne die anderen Spalten.
So kann ich das nicht weiterverarbeiten.
Meine Frage:
Gibt es vielleicht eine Funktion, mit der man SQL dazu bringen kann, das \'normal\' bereitzustellen?
Ach ja, wichtig: ich bin leider auf eine Ausführung in einem einzigen Select beschränkt. Das muss also irgendwie auf einmal flutschen...
Danke im Voraus,
Stefan
Das SELECT:
SELECT PROT_CHANGE.MAN ,
PROT_CHANGE.AK ,
PROT_CHANGE.PNR ,
PROT_CHANGE.VERTNR ,
PROT_CHANGE.P_LFD ,
PROT_CHANGE.P_DATA ,
PROT_CHANGE.P_DATE ,
PROT_CHANGE.P_TIME ,
PROT_CHANGE.P_UID ,
PROT_CHANGE.ZDAT
FROM L2001.PROT_CHANGE PROT_CHANGE
WHERE PROT_CHANGE.MAN= \'xxxxx\'
AND PROT_CHANGE.PNR= \'yyyyyy\'
AND PROT_CHANGE.P_MASKID=\'PSTVAR\'
AND PROT_CHANGE.P_DATE = \'2009-03-11\'
ORDER BY 1 ASC ,
2 ASC ,
3 ASC ,
4 ASC
;
Das Ergebnis:
MAN AK PNR VERTNR P_LFD P_DATE P_TIME P_UID ZDAT
===== ===== ============ =========== =========== ==================== ==================== =============== ====================
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00
P_DATA
======
VIZDAT= \"2009-04-01-00.00.00.000000\";
VILA= \"702\";
VIEBETR= \"805,27\";
VILFD= \"1\";
VIADAT= \"2009-04-01-00.00.00.000000\";
VIUSERID= \"L4016RF\";
VIMAN= \"34016\";
VIAK= \"ANGV\";
VIPNR= \"yyyyyy\";
VIVERTNR= \"1\";
VIVBAB= \"2008-10-01-00.00.00.000000\";
VIMANLA= \"**151\";
VIAKLA= \"*\";
VILAAB= \"2005-01-01-00.00.00.000000\";
Mein Wunschergebnis:
MAN AK PNR VERTNR P_LFD P_DATE P_TIME P_UID ZDAT P_DATA
===== ===== ============ =========== =========== ==================== ==================== =============== ==================== ======
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIZDAT= \"2009-04-01-00.00.00.000000\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VILA= \"702\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIEBETR= \"805,27\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VILFD= \"1\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIADAT= \"2009-04-01-00.00.00.000000\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIUSERID= \"L4016RF\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 IMAN= \"xxxxx\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 IAK= \"ANGV\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIPNR= \"yyyyyy\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIVERTNR= \"1\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIVBAB= \"2008-10-01-00.00.00.000000\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIMANLA= \"**151\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VIAKLA= \"*\";
xxxxx ANGV yyyyyy 1 6 11-MAR-2009 00:00:00 01-JAN-1899 07:51:00 L4016RF 01-APR-2009 00:00:00 VILAAB= \"2005-01-01-00.00.00.000000\";
(sorry, ich kanns nicht besser formatieren)