Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:dashboard:analyses:variable_analyses_oracle [2015/05/20 10:27] manuel.kindler angelegt |
software:dashboard:analyses:variable_analyses_oracle [2021/07/01 09:52] (aktuell) |
||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
Variablen in 3-er-Blöcken einbinden ist performanter. Besser mehrere 3-er-Blöcke benutzen als ein riesiges Join. Noch besser wenn die //values// (Indices) aus der view_instance benutzt werden können. | Variablen in 3-er-Blöcken einbinden ist performanter. Besser mehrere 3-er-Blöcke benutzen als ein riesiges Join. Noch besser wenn die //values// (Indices) aus der view_instance benutzt werden können. | ||
<code sql> | <code sql> | ||
- | SELECT "1" as Requester, "2" as Email, "3" as Phone FROM | + | SELECT Variablen1.1,Variablen1.3,Variablen1.3 |
+ | FROM | ||
( | ( | ||
SELECT var1.stringvalue AS "1", var2.stringvalue AS "2", var3.stringvalue AS "3", inst.ID | SELECT var1.stringvalue AS "1", var2.stringvalue AS "2", var3.stringvalue AS "3", inst.ID | ||
FROM view_instance inst | FROM view_instance inst | ||
- | LEFT JOIN view_variable var1 ON inst.ID = var1.instanceID AND var1."name" = 'text_requester' | + | LEFT JOIN view_variable var1 ON inst.ID = var1.instanceID AND var1."name" = '' |
- | LEFT JOIN view_variable var2 ON inst.ID = var2.instanceID AND var2."name" = 'text_requester-email' | + | LEFT JOIN view_variable var2 ON inst.ID = var2.instanceID AND var2."name" = '' |
- | LEFT JOIN view_variable var3 ON inst.ID = var3.instanceID AND var3."name" = 'text_requester-phone' | + | LEFT JOIN view_variable var3 ON inst.ID = var3.instanceID AND var3."name" = '' |
- | WHERE inst.definitionname = 'S-AP-G' AND inst.archiv = 0 AND inst."END" IS NOT NULL | + | ) as Variablen1 |
- | ) | + | INNER JOIN |
+ | ( | ||
+ | SELECT var1.stringvalue AS "1", var2.stringvalue AS "2", var3.stringvalue AS "3", inst.ID | ||
+ | FROM view_instance inst | ||
+ | LEFT JOIN view_variable var1 ON inst.ID = var1.instanceID AND var1."name" = '' | ||
+ | LEFT JOIN view_variable var2 ON inst.ID = var2.instanceID AND var2."name" = '' | ||
+ | LEFT JOIN view_variable var3 ON inst.ID = var3.instanceID AND var3."name" = '' | ||
+ | ) as Variablen2 | ||
+ | ON Variablen1.ID = Variablen2.ID | ||
+ | </code> | ||
+ | |||
+ | ==== Prozessinstanzen inklusive beliebig vielen Prozessvariablen auflisten ==== | ||
+ | Mit folgendem Statement kann eine Auflistung von Prozessinstanzen inklusive Darstellung von Indexvariablen sowie beliebigen Prozessvariablen erstellt werden. | ||
+ | |||
+ | //Hinweis: Zur Vorsortierung der Ergebnisliste muss die komplette SQL-Anweisung als INNER-SELECT geschachtelt und anschließend sortiert werden. // | ||
+ | <code sql> | ||
+ | SELECT DISTINCT | ||
+ | pi."name", | ||
+ | /* | ||
+ | Auslesen der Indexvariablen 1 bis 10 bei Bedarf: | ||
+ | */ | ||
+ | CASE WHEN pi.value1 IS NOT NULL THEN pi.value1 ELSE '-' END AS "Index 1", | ||
+ | CASE WHEN pi.value2 IS NOT NULL THEN pi.value2 ELSE '-' END AS "Index 2", | ||
+ | CASE WHEN pi.value3 IS NOT NULL THEN pi.value3 ELSE '-' END AS "Index 3", | ||
+ | /* | ||
+ | Auslesen der gewünschten Prozessvariablen: | ||
+ | - Für jede Variable muss eine processVariables.- Zeile eingefügt werden | ||
+ | */ | ||
+ | processVariables.VARIABLE_1_OHNE_LEERZEICHEN AS "Header Variable 1", | ||
+ | processVariables.VARIABLE_2_OHNE_LEERZEICHEN AS "Header Variable 2", | ||
+ | processVariables.VARIABLE_3_OHNE_LEERZEICHEN AS "Header Variable 3", | ||
+ | identP.name AS "StarterID", | ||
+ | pi.definitionName AS "Prozessdefinition", | ||
+ | pi.id AS "ProzessID" | ||
+ | FROM view_instance pi | ||
+ | LEFT JOIN view_identity identP ON pi.creationUserId = identP.id | ||
+ | LEFT JOIN ( | ||
+ | SELECT piInner.id, | ||
+ | /* | ||
+ | Erstellen einer MAX(...) Zeile für jede gewünschte Variable | ||
+ | */ | ||
+ | MAX( CASE WHEN var.name = 'PROZESSVARIABLE 1' THEN var.stringvalue ELSE '-' END ) as VARIABLE_1_OHNE_LEERZEICHEN, | ||
+ | MAX( CASE WHEN var.name = 'PROZESSVARIABLE 2' THEN var.stringvalue ELSE '-' END ) as VARIABLE_2_OHNE_LEERZEICHEN, | ||
+ | MAX( CASE WHEN var.name = 'PROZESSVARIABLE 3' THEN var.stringvalue ELSE '-' END ) as VARIABLE_3_OHNE_LEERZEICHEN | ||
+ | FROM view_instance piInner | ||
+ | /* | ||
+ | Im folgenden IN (...) Statement müssen alle Variablennamen aufgelistet werden, die selektiert werden sollen: | ||
+ | */ | ||
+ | LEFT JOIN view_variable var ON var.instanceId = piInner.id AND var.name IN ('PROZESSVARIABLE 1', 'PROZESSVARIABLE 2', 'PROZESSVARIABLE 3') | ||
+ | GROUP BY piInner.id | ||
+ | ) processVariables ON pi.id = processVariables.id | ||
</code> | </code> | ||
+ |