digga_mies Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 Holla, Ich bin langsam am verzweifeln mit diesen doofen SQL Abfragen Aber man muss ja tun, was man tun muss. Also im Endeffekt geht es hierbei um McAffee EPO Abfragen, man muss sich aber nicht damit auskennen um mir hier zu helfen denke ich. Probelm ist Folgendes: Ich möchte einen Report erstellen, der mir mit einem Netz- oder auch Radardiagramm eine Übersicht über die verteilten Virendefinitionen pro AD Site gibt. Das ganze soll aber Prozentual angezeigt werden, also wie viel Prozent der Clients pro Site haben einen Virendefinitionsstand der letzten 4 Versionen. Leider bekomme ich es momentan nicht hin, die Clients einer Site zu zählen. So das ich im Ergebnis immer die Site, dann die totale Anzahl und dann die Anzahl der Clients mit aktuellem Virendefinitionen bekomme. Ich weiß, das ich das voraussichtlich irgendwie mit Subselects machen muss. Aber irgendwie bekomme ich das ganze nicht hin. Hat jemand eine Idee? EPOBranchNode.NodeName ist hier der Name der Site, EPOProductProperties.DATVer ist die Version der Virendefinitionen. SELECT EPOLeafNode.NodeName AS ComputerName, EPOBranchNode.NodeName, EPOProductProperties.DATVer, (SELECT MAX(DATVer) FROM EPOProductProperties WHERE (ProductCode = 'VIRUSCAN8700') GROUP BY ProductCode) AS MaxDat FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName = 'AR01' OR EPOBranchNode.NodeName = 'AT01' OR EPOBranchNode.NodeName = 'AU01' OR EPOBranchNode.NodeName = 'BE01' OR EPOBranchNode.NodeName = 'BR00' OR EPOBranchNode.NodeName = 'BG01' OR EPOBranchNode.NodeName = 'CA01' OR EPOBranchNode.NodeName = 'CL01' OR EPOBranchNode.NodeName = 'CN00' OR EPOBranchNode.NodeName = 'CO01' OR EPOBranchNode.NodeName = 'HR01' OR EPOBranchNode.NodeName = 'CZ00' OR EPOBranchNode.NodeName = 'DK01' OR EPOBranchNode.NodeName = 'DO01' OR EPOBranchNode.NodeName = 'EC01' OR EPOBranchNode.NodeName = 'FI01' OR EPOBranchNode.NodeName = 'FR00' OR EPOBranchNode.NodeName = 'DE00' OR EPOBranchNode.NodeName = 'HU00' OR EPOBranchNode.NodeName = 'IN01' OR EPOBranchNode.NodeName = 'ID01' OR EPOBranchNode.NodeName = 'IE01' OR EPOBranchNode.NodeName = 'IT01' OR EPOBranchNode.NodeName = 'JP01' OR EPOBranchNode.NodeName = 'KR01' OR EPOBranchNode.NodeName = 'MY01' OR EPOBranchNode.NodeName = 'MY02' OR EPOBranchNode.NodeName = 'MX01' OR EPOBranchNode.NodeName = 'NL01' OR EPOBranchNode.NodeName = 'NO01' OR EPOBranchNode.NodeName = 'PK01' OR EPOBranchNode.NodeName = 'PE01' OR EPOBranchNode.NodeName = 'PH01' OR EPOBranchNode.NodeName = 'PL01' OR EPOBranchNode.NodeName = 'PT01' OR EPOBranchNode.NodeName = 'RO01' OR EPOBranchNode.NodeName = 'RU01' OR EPOBranchNode.NodeName = 'SG01' OR EPOBranchNode.NodeName = 'ZA01' OR EPOBranchNode.NodeName = 'ES00' OR EPOBranchNode.NodeName = 'SE02' OR EPOBranchNode.NodeName = 'CH00' OR EPOBranchNode.NodeName = 'TW01' OR EPOBranchNode.NodeName = 'TH01' OR EPOBranchNode.NodeName = 'TR01' OR EPOBranchNode.NodeName = 'UK01' OR EPOBranchNode.NodeName = 'US00' OR EPOBranchNode.NodeName = 'VN01' GROUP BY EPOBranchNode.NodeName, EPOLeafNode.NodeName, EPOProductProperties.DATVer ORDER BY NodeName, ComputerName Ich hoffe jemand von euch hat eine Idee. Ich muss leider so eklig über die Sites filtern, schön ist das nicht, aber so geht es am Besten. Grüße, digga_mies :bimei Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 30. November 2010 Autor Teilen Geschrieben 30. November 2010 Bin jetzt soweit, das ich den Anteil rausbekomme...Jetzt fehlt nur noch die totale Anzahl der Clients, damit ich sie als Prozentzahl ausgeben kann... Das hier wäre jetzt mein Code: DECLARE @VARIABLE1 VARCHAR(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SELECT EPOBranchNode.NodeName, EPOProductProperties.DATVer, COUNT(EPOProductProperties.DATVer) AS Part FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName = 'AR01' OR EPOBranchNode.NodeName = 'AT01' OR EPOBranchNode.NodeName = 'AU01' OR EPOBranchNode.NodeName = 'BE01' OR EPOBranchNode.NodeName = 'BR00' OR EPOBranchNode.NodeName = 'BG01' OR EPOBranchNode.NodeName = 'CA01' OR EPOBranchNode.NodeName = 'CL01' OR EPOBranchNode.NodeName = 'CN00' OR EPOBranchNode.NodeName = 'CO01' OR EPOBranchNode.NodeName = 'HR01' OR EPOBranchNode.NodeName = 'CZ00' OR EPOBranchNode.NodeName = 'DK01' OR EPOBranchNode.NodeName = 'DO01' OR EPOBranchNode.NodeName = 'EC01' OR EPOBranchNode.NodeName = 'FI01' OR EPOBranchNode.NodeName = 'FR00' OR EPOBranchNode.NodeName = 'DE00' OR EPOBranchNode.NodeName = 'HU00' OR EPOBranchNode.NodeName = 'IN01' OR EPOBranchNode.NodeName = 'ID01' OR EPOBranchNode.NodeName = 'IE01' OR EPOBranchNode.NodeName = 'IT01' OR EPOBranchNode.NodeName = 'JP01' OR EPOBranchNode.NodeName = 'KR01' OR EPOBranchNode.NodeName = 'MY01' OR EPOBranchNode.NodeName = 'MY02' OR EPOBranchNode.NodeName = 'MX01' OR EPOBranchNode.NodeName = 'NL01' OR EPOBranchNode.NodeName = 'NO01' OR EPOBranchNode.NodeName = 'PK01' OR EPOBranchNode.NodeName = 'PE01' OR EPOBranchNode.NodeName = 'PH01' OR EPOBranchNode.NodeName = 'PL01' OR EPOBranchNode.NodeName = 'PT01' OR EPOBranchNode.NodeName = 'RO01' OR EPOBranchNode.NodeName = 'RU01' OR EPOBranchNode.NodeName = 'SG01' OR EPOBranchNode.NodeName = 'ZA01' OR EPOBranchNode.NodeName = 'ES00' OR EPOBranchNode.NodeName = 'SE02' OR EPOBranchNode.NodeName = 'CH00' OR EPOBranchNode.NodeName = 'TW01' OR EPOBranchNode.NodeName = 'TH01' OR EPOBranchNode.NodeName = 'TR01' OR EPOBranchNode.NodeName = 'UK01' OR EPOBranchNode.NodeName = 'US00' OR EPOBranchNode.NodeName = 'VN01' GROUP BY EPOBranchNode.NodeName, EPOProductProperties.DATVer HAVING EPOProductProperties.DATVer = @VARIABLE1 ORDER BY EPOBranchNode.NodeName Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 Einfach ein auf ein Subquery in dem du nicht gruppierst, dann hast dein Wert. Btw, das hässliche filtern sollte sich auch eleganter lösen lassen. Unter Tsql z.b. EPOBranchNode.NodeName in ( 'a', 'b', 'c' . . . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 1. Dezember 2010 Autor Teilen Geschrieben 1. Dezember 2010 Ahja, stimmt ja, sowas gab es da ja auch Ich danke dir, werd es mal probieren... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 1. Dezember 2010 Autor Teilen Geschrieben 1. Dezember 2010 Hello again, Also ich habe mal einen Versuch gestartet... Das mit dem IN Statement klappt wunderbar und erspart vor allem Platz in dem kleinen SSRS Query Editor Fenster Was allerdings nicht funktioniert ist meine Subquery Leider bekomme ich dann die Summe aller angegeben Sites in jeder Zeile, was hier allerdings nichts nutzt, denn ich möchte ja die Gesamtzahl aller Rechner pro Site und dann den prozentualen Anteil der Site mit den aktuellen Virendefinitionen ausgeben. Gibt es eine Möglichkeit der Subquery ein Feld der aktuellen Zeile zu übergeben? Also in meinem Falle dann den Namen der Site, damit er eben immer nur die der Site zählt und als 3. Feld niederschreibt? So sieht meine Query jetzt nach der Bearbeitung aus, funktioniert aber nur so wie eben beschrieben: DECLARE @VARIABLE1 VARCHAR(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SELECT EPOBranchNode.NodeName, COUNT(EPOProductProperties.DATVer) AS Part, (SELECT COUNT(EPOProductProperties.DATVer) FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR00','BG01','CA01','CL01','CN00','CO01','HR01','CZ00','DK01','DO01','EC01','FI01','FR00','DE00','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH00','TW01','TH01','TR01','UK01','US00','VN01') ) AS Total FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR00','BG01','CA01','CL01','CN00','CO01','HR01','CZ00','DK01','DO01','EC01','FI01','FR00','DE00','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH00','TW01','TH01','TR01','UK01','US00','VN01') GROUP BY EPOBranchNode.NodeName, EPOProductProperties.DATVer HAVING EPOProductProperties.DATVer = @VARIABLE1 ORDER BY EPOBranchNode.NodeName P.S.: Sorry für den Doppelpost, entweder ich bin zu doof den Edit Button zu finden, oder es gibt keinen MfG digga_mies Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 1. Dezember 2010 Teilen Geschrieben 1. Dezember 2010 (bearbeitet) Post mal bitte wie deine Tabellen zusammenhängen, wie sie verknüpft sind, und die Bedeutung der Felder die du da Benutzt,und auf denen du Joinst. Ich blick durch das ding beim besten Willen nicht durch, und das machts doch etwas schwierig. Soweit ich verstanden habe, brauchst du sowas hier Select Sitename , Count(distinct rechner_old_Version.ID) [Rechner gesuchten Versionen] , count(distinct rechner_alle.id) [Alle Rechner], ( 1.0 * Count(distinct rechner_old_Version.ID) / count(distinct rechner_alle.id)) * 100 [% der Rechner mit gesuchter Version vs Alle Rechner der Site] FROM Site as s LEFT JOIN Rechner as rechner_old_Version on s.ID =rechner_old_version.SiteID AND Rechner.Version in ('1','2','3','4') LEFT JOIN Rechner as rechner_alle on s.id = rechner_alle.siteID WHERE a=b GROUP BY Sitename Das war jetzt mal eher allgemein gehalten. Du musst halt durch die gegend joinen das du an deine Site rankommst, und dann an die Rechner in der Site. An und für sich ändert sich am Prinzip aber nichts. Soweit jedenfalls mein verständnis von dem was du als Ergebniss haben möchtest. 1. die Site, 2. die Anzahl Rechner mit bestimmten Versionen 3. die Anzahl aller Rechner 4. % Gruß Sven Bearbeitet 1. Dezember 2010 von streffin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 3. Dezember 2010 Autor Teilen Geschrieben 3. Dezember 2010 Hey, also es sind insgesamt 3 Tabellen auf die ich zugreife. EPOLeafNode [Die Tabelle mit den Computern] - NodeName := Computer Name, die dann der Site zuzuordnen sind EPOBranchNode [Die Tabelle mit den Sites] - NodeName := Site Name, wo die Computer dann eingeordnet werden müssen EPOProductProperties [Die installierten McAffee Applikationen mit Eigenschaften] - DATVer := Ist die Version der Virendefinitionen, die der Virenschutz verwendet Untereinander sind diese Tabellen mit Feldern verbunden, die sich AutoID und ParentID nennen, diese sind aber nicht einfach zu joinen und je nachdem wie man das macht, bekommt man immer ein anderes Ergebnis. Ich habe sie in meinem Code so gejoint, das immer die übergeordnete, die AutoID zu der ParentID der untergeordneten Tabelle bekommen hat. Demnach wäre meine Ordnung jetzt: EPOBranchNode > EPOLeafNode > EPOProductProperties Damit man die Virenschutzdefinitionsversion (Krasses Wort! ) auch vom richtigen Programm bekommt, habe ich dann auf 'VIRUS%' gefiltert, was dann mein WHERE Statement erklärt. Ich hoffe das reicht insofern. Grüße Rob Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 3. Dezember 2010 Teilen Geschrieben 3. Dezember 2010 Bevor ich anfange mein Gehirn mit deinem Statement zu füttern - geht das nicht alles einfacher? Wir haben hier auch so einen Epo Server und da gibts eine Konsole die solche Dinge anzeigt. Stichwort: Reverse Engineering will heißen in der Konsole aktualisieren und das statement in der Datenbank mitschneiden... die joins wird man da ja sehen können. Edith sagt: @Digga: 15 minuten kannst du editieren, solange keiner darauf geantwortet hat... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 3. Dezember 2010 Autor Teilen Geschrieben 3. Dezember 2010 Also das mit dem EPO Reporting stimmt, es gibt da ein Web Frontend mit den man sich einige lustige Abfragen zusammenstellen kann und sich auch so einiges auswerten lassen kann. Das Radar was ich hier erstellen möchte, gibt es aber nicht in dem integrierten System. Ich benutze hier ausschleßlich den SQL Server 2008 Reporting Service falls dir das etwas sagt. Damit kann man die Reports in einer Visual Studio Umgebung designen, programmieren und anderen tollen Firlefanz mit anstellen. Die Reports werden dann auf einen eigenen Server exportiert und dort kann man sie dann wohlsortiert in einer virtuellen Architektur von Ordnern anzeigen lassen. Mein Kollege hat auch die Queries, die man mit dem EPO Frontend machen kann, genutzt um sich so ein Radar im Excel zusammenzuflicken, ABER es ist unschön so ein Excel in eine Internetseite einzubinden bzw. es jeden Tag händisch aktualisieren zu müssen. Somit wollen wir dieses Radar mit Hilfe des Reporting Services automatisieren und portierbarer machen. Denn mit dem Reporting Service hat man nicht nur die Möglichkeit die Reports bereitzustellen sondern auch das ganze mit den aktuellen Daten exportieren zu können und das ebenfalls automatisiert. Jetzt kennst du die Beweggründe dieser Arbeit btw: Danke für die Info von Edith Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 3. Dezember 2010 Autor Teilen Geschrieben 3. Dezember 2010 Also vielen Dank an deine allgemein gehaltene Zusammenfassung meines Problems streffin Es funktioniert jetzt So sieht mein Code jetzt aus, die Prozentberechnung mache ich dann direkt im Report, das geht dort einfacher DECLARE @VARIABLE1 VARCHAR(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SELECT EPOBranchNode.NodeName ,COUNT(DISTINCT Rechner_aktuell.ComputerName) AS Clients_wt_cur_DAT ,COUNT(DISTINCT Rechner_total.ComputerName) AS All_Clients FROM EPOBranchNode LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' AND EPOProductProperties.DATVer = @VARIABLE1 ) AS Rechner_aktuell ON EPOBranchNode.AutoID = Rechner_aktuell.ParentID LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' ) AS Rechner_total ON EPOBranchNode.AutoID = Rechner_total.ParentID WHERE EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR01','BG01','CA01','CL01','CN00','CO01','HR01','CZ00','DK01','DO01','EC01','FI01','FR00','DE00','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH01','TW01','TH01','TR01','UK01','US00','VN01') GROUP BY EPOBranchNode.NodeName Nun habe ich aber noch eine Frage! Ich habe ja diese ganzen Sites angegeben in dem WHERE Statement. Kann man diese auch gruppieren? Ich habe nämlich gemerkt, das wir nicht nur eine Site von z.B.: BR haben, sondern 7, also BR01, BR02, BR03, ... , BR07. Also muss ich natürlich alle abfragen, wie es aussieht mit den aktuellen Rechnern und allen Rechnern und diese dann für BR zusammenfassen. Wenn jemand mir dazu noch einen Tip geben könnte, dann wäre ich euch sehr dankbar. In Kurzform: Aus BR01, [...] , BR07 mache BRges! Grüße Rob Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 3. Dezember 2010 Teilen Geschrieben 3. Dezember 2010 ich würde nicht gruppieren, sondern eine eigene kleine query mit select sum(was du summierst) where substr(Node_name,1,2)='BR'; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 6. Dezember 2010 Autor Teilen Geschrieben 6. Dezember 2010 Und wie sollte ich das deiner Meinung nach in meine Query einbinden? Vor allem Dingen soll das ja nicht nur für BR gemacht werden, sondern für alle anderen ja auch. Wie wäre das da am einfachsten?? Grüße Rob Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 6. Dezember 2010 Teilen Geschrieben 6. Dezember 2010 (bearbeitet) Also ich hab null Plan von Reporting - soviel vorweg. Aber eigentlich sollte diene Query so abgeändert das zeigen was du willst: aus SELECT EPOBranchNode.NodeName GROUP BY EPOBranchNode.NodeName mach mal SELECT substr(EPOBranchNode.NodeName,1,2) GROUP BY substr(EPOBranchNode.NodeName,1,2) Bearbeitet 6. Dezember 2010 von Corto |sX| Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 6. Dezember 2010 Autor Teilen Geschrieben 6. Dezember 2010 Also ich hab null Plan von Reporting - soviel vorweg. Aber eigentlich sollte diene Query so abgeändert das zeigen was du willst: aus mach mal SELECT substr(EPOBranchNode.NodeName,1,2) GROUP BY substr(EPOBranchNode.NodeName,1,2) Ich danke euch allen hier Jetzt funktioniert es genau so, wie ich es mir vorgestellt habe Grüße Rob Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 7. Dezember 2010 Autor Teilen Geschrieben 7. Dezember 2010 Hey Leute, mir ist da noch etwas eingefallen. Es ist ja Schwachsinn nur auf die neueste Version zu überprüfen. Ich würde nun gerne von dem MAX(DATVer) 3 abziehen. Dann hätte ich die 4 letzten Versionen. Wenn ich aber versuche VARIABLE1 als numerischen Wert zu initialisieren, gibt er mir immer den Fehler aus, das er NVARCHAR nicht in NUMERIC konvertieren kann. Gleicher Fehler bei CAST und CONVERT. Die Version wird im Format '1234.0000' angegeben. Da ja schon ein Punkt vorhanden ist, sollte sich das ganze doch ohne Problem als numerischer Wert behandeln lassen, oder? Ich hoffe ihr könnt mir hiermit nochmal helfen. Grüße Rob Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 7. Dezember 2010 Teilen Geschrieben 7. Dezember 2010 du musst den punkt rausholen, dann kannst du normal zu number konvertieren. versuch mal: to_number(substring(name_column,1, instr('.',name_column))instr('.',name_column)+substring(name_column,instr('.',name_column))); versuchen ich kenne kaum mssql, warscheinlich gibt es 100 elegantere möglichkeiten.. aber davor schneiden und dahinter schneiden und dann zusammentackern hilft immer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 7. Dezember 2010 Teilen Geschrieben 7. Dezember 2010 ersten code bitte ignorieren ^^ hab da die syntax etwas verdreht.. so funktionierts: select substr( '1234.0000', 1, instr('1234.0000','.')-1) || substr( '1234.0000', instr('1234.0000','.')+1) from dual; wobei bei mssql mit '+' verkettet wird soweit ich weis Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
digga_mies Geschrieben 8. Dezember 2010 Autor Teilen Geschrieben 8. Dezember 2010 (bearbeitet) Hallo, ich möchte mich nochmal recht herzlich bedanken. Es funktioniert jetzt alles, allerdings habe ich das Ganze doch ein bisschen anders gelöst. Der Code ist hier: DECLARE @VARIABLE1 NUMERIC(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SET @VARIABLE1 = @VARIABLE1 - 3; SELECT SUBSTRING(EPOBranchNode.NodeName,1,2) ,COUNT(DISTINCT Rechner_aktuell.ComputerName) AS Clients_wt_cur_DAT ,COUNT(DISTINCT Rechner_total.ComputerName) AS All_Clients FROM EPOBranchNode LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' AND EPOProductProperties.DATVer >= CAST(@VARIABLE1 AS nvarchar(4)) ) AS Rechner_aktuell ON EPOBranchNode.AutoID = Rechner_aktuell.ParentID LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' ) AS Rechner_total ON EPOBranchNode.AutoID = Rechner_total.ParentID WHERE EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR01','BR02','BR03','BR04','BR05','BR06','BR07','BR-EXCEPTIONS','BROK','BR-SRV','BR-SRV-WEBSENSE','BG01','CL01','CN00','CN01','CN02','CN03','CN04','CN05','CN06','CN07','CN08','CN09''CO01','HR01','CZ','CZ_NOTEBOOKS','CZ_SERVERS','CZ00_SK00','DK01','DO01','EC01','FI01','FR_AD','FR00','FR01','FR02','FR03','FR04','FR07','FR09','FR16','DE00','DE01','DE03', 'DE05','DE06','DE08','DE08_Server','DE11','DE12','DE13','DE17','DE20','DE21','DEX1','DEX2','DEXX','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH01','CH03','CH05','CH07','TW01','TH01','TR01','UK01','US00','VN01','VN02','VN03') GROUP BY SUBSTRING(EPOBranchNode.NodeName,1,2) Grüße Rob Bearbeitet 8. Dezember 2010 von digga_mies Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.