Frage : Notwendigkeitshilfe in der Aktualisierung einer SQL-Frage, um mehrfache Daten von einer signle Spalte zurückzuholen

Hallo - wir haben eine SQL-Frage, die gegen zwei Tabellen DB läuft und holen Daten für uns zurück. Die vorhandene Frage zählt die Zahl sucessful Schlägen (Authentisierungserfolg) zu einer bestimmten Anwendung für jeden Tag und bis zum Department, Departmentcode und Tag des Monats sortiert.

Now, das wir die selben mit nur einer Tabelle erzielen müssen. ein der Spalte des Interesses enthält mehrfachen Datenwert für uns d.h. USERPROFILEATTRS = uid=markuser1 uid=markuser1 departmentname=Marketing

Here ist die Bilanztabelleninformationen:

VERURSACHEN TABELLE AUDIT
(„EVENTDATEANDTIME“ ZEITSTEMPEL (6),
„SERVERID“ NVARCHAR2 (255),
„EVENTNAME“ NVARCHAR2 (255),
„URL“ NVARCHAR2 (255),
„BETRIEB“ NVARCHAR2 (255),
„TARGETUSERDN“ NVARCHAR2 (255),
„IP ADDRESS“ NVARCHAR2 (255),
„USERPROFILEATTRS“ NVARCHAR2 (255),
)


The Beispieldaten von der Bilanztabelle aussieht wie dieses:


EVENTDATEANDTIME = 18-AUG-10 07.33.01.000 000000 P.M.
SERVERID = myserver1/>EVENTNAME = AUTHN_SUCCESS
URL = xyz.mydomain.com %2Fportal%2Flang%2Fen-us%2default.aspx
OPERATION = GET
TARGETUSERDN = uid=markuser1, ou=people, o=mycomany, c=com
IPADDRESS = 10.8.146.134
USERPROFILEATTRS = uid=markuser1 uid=markuser1, das departmentcode=36

Note departmentname=Marketing ist: die Attribute seprated mit einem Raum seperator in der Datenbank column.

Can, das, wir die SQL-Frage jetzt änderten, damit sie Daten von einer Tabelle zurückholt und den gleichen Ausgang produzieren?

The bestehende SQL Frage ist unten:


select
department_name,
department_code, Tag,
sum (succ_por_count) Portal,
sum (succ_app1_count) App1,
sum (succ_app2_count) App2
from (
select u.department_name, u.department_code, to_char (eventdateandtime, „yy-mm-dd ") Tag,
case, wenn EVENTNAME = „AUTHN_SUCCESS“ und URL „%portal%“ dann 1 sonst 0 Ende succ_por_count mögen,
case, wenn EVENTNAME = „AUTHN_SUCCESS“ und URL „%APP1%“ dann 1 sonst 0 Ende succ_app1_count mögen,
case, wenn EVENTNAME = „AUTHN_SUCCESS“ und URL „%APP2%“ dann 1 sonst 0 Ende succ_app2_count
from user_tbl u mögen, audit_tbl a
where u.userid = substr (USERPROFILEATTRS, 5)
order durch u.department_name, u.department_code, das to_date (to_char (eventdateandtime, „yy-mm-dd "), „yy-mm-dd ")
) ist
group durch department_name, department_code, day


Also, es möglich, Daten für den letzten Monat nur zurückzuholen nur wie entgegensetzen allen Monaten mit dieser Frage d.h. Wir müssen diese Frage am ersten Tag jedes Monats für den vorhergehenden Monat laufen lassen d.h., wenn wir dieses laufen lassen, am 1. September 2010 dann, das es nur Erscheinenaufzeichnungen für August 2010 month.

Note sollte: nav_kum_v half mir, die erste Frage aufzubauen und ich bin hoffend er kann dieses aufheben außerdem.

Thanks,

Antwort : Notwendigkeitshilfe in der Aktualisierung einer SQL-Frage, um mehrfache Daten von einer signle Spalte zurückzuholen

wenn Sie dieses zu jeder Zeit laufen lassen, überprüft es sysdate (z.B. ist heute 25. August - 2010) und die Frage holt Daten für den Monat july-2010. Mich informieren, wenn Sie irgendwelche Änderungen benötigen.

Dieses versuchen:

vorwählen
department_name,
department_code,
day1,
Summe (succ_por_count) Portal,
Summe (succ_app1_count) App1,
Summe (succ_app2_count) App2
von (
auserwählt
substr (USERPROFILEATTRS, instr (userprofileattrs, „=“, 1.2) +1,
instr (substr (USERPROFILEATTRS, instr (userprofileattrs, „=“, 1.2) +1), ' ') - 1) department_name,  
substr (userprofileattrs, instr (userprofileattrs, „=“, - 1) +1) department_code,
to_char (eventdateandtime, „JJ-MillimeterdD ") Day1,
Fall, wenn EVENTNAME = „AUTHN_SUCCESS“ und URL „%portal%“ dann 1 sonst 0 Ende succ_por_count mögen,
Fall, wenn EVENTNAME = „AUTHN_SUCCESS“ und URL „%APP1%“ dann 1 sonst 0 Ende succ_app1_count mögen,
Fall, wenn EVENTNAME = „AUTHN_SUCCESS“ und URL „%APP2%“ dann 1 sonst 0 Ende succ_app2_count mögen
vom audit_tbl
wo to_char (eventdateandtime, „yyyymm ") = to_char (add_months (trunc (sysdate), - 1), „yyyymm ")
Auftrag durch department_name, department_code, to_date (to_char (eventdateandtime, „JJ-MillimeterdD "), „JJ-MillimeterdD ")
)
Gruppe durch department_name, department_code, day1;
Weitere Lösungen  
 
programming4us programming4us