in spalten die verschiedene software eintragen

mickyturbo

Fleissiger Benutzer
Beiträge
54
Hallo,

hab versuche jede software in einer separaten spalte anzeigen zu lassen,
ich versuche es mal anhand eines beispiels zu Zeigen was ich vorhabe.

Code:
Location | Raum | USER      | PC NR | Betriebssystem |     OFFICE         |       ADOBE
AIR  1       Schmitt        1  Win 2007     Office 2014    v7
AIR    1    Müller           2    Win 2007    Office 2016    v8


bekomme es nur so hin

Code:
Location | Raum | USER      |  PC NR  |       Software
AIR    1     Schmitt        1      Win 2007    
AIR     1  Schmitt   1    Office 2014
AIR    1   Schmitt     1     v7
AIR     1   Müller   2  Win 2007       
AIR    1    Müller   2   Office 2016        
AIR    1   Müller     2   v8

möchte aber nicht das der User öfters angezeigt wird, sondern nur jeweils 1 mal

das ist akutell mein code
Code:
 SELECT DISTINCT ll.location,
ll.roomnr,
    u.surname,
    ll.serial,
    ll.descr,
    sm.name AS "Software"
   FROM ( SELECT ofr.location,
            ofr.roomnr,
            e.serial,
            e.type,
            e.comment,
            e.descr
           FROM equipmentdata_room edr,
            office_rooms ofr,
            equipment e
          WHERE edr.roomid = ofr.roomid AND edr.serial = e.serial AND e.type = 'PC'::bpchar) ll
     LEFT JOIN users_equipment ue ON ll.serial = ue.equipmentnr
     RIGHT JOIN users u ON u.code::text = ue.usercode::text
     LEFT JOIN software_licenses sl ON sl.equipmentnr = ue.equipmentnr
     LEFT JOIN software_main sm ON sm.id = sl.sw_id
  WHERE sm.type = 'BS'::bpchar OR sm.type = 'OF'::bpchar OR sm.type = 'CA'::bpchar OR sm.type = 'ZP'::bpchar OR sm.type = 'PE'::bpchar
 
  ORDER BY ll.location, ll.roomnr, ll.serial;

kann mir jemand helfen ?
 
Werbung:
grobe Gedanken dazu:

  • wie viele verschiedene Softwaren gibt es? Das ist sicherlich nicht statisch
  • warum willst Du das so?
  • würde eine Aggregation auch ausreichend sein?

Die brutale Methode wäre es, dynamisch ein SQL zu erstellen. Dazu zuerst alle möglichen Software-Dinger ermitteln und dann ein passenden SQL, z.B. mittels plpgsql erstellen und dieses dann via EXECUTE ausführen. Spricht, Du mußt eine passende stored proc. erstellen.

Lohnt sich der Aufwand?

Es gibt hier auch eine FAQ und dort einen Artikel "Zeilen zu Spalten" von mir, schon etwas älter. Lesen.
 
im wesentlichen soll nur nach 3 oder 4 software Arten geschaut werden
Betriebssystem | OFFICE | ADOBE | CAD
Win 2007 | Office 2010 | Adobe 7 | Autodesk 2010
Win 2010 | OFFICE 2016 | Adobe 7 | Autodesk 2009

das ist die Software die wir haben.
id, name type
1 Adobe Acrobat 5.0 Standard PE
2 Adobe Acrobat 6.0 Standard PE
3 Adobe Acrobat 7.0 Standard PE
4 Adobe Photoshop 6.0 ME
5 Autodesk AutoCAD 2009 Architecture CA
6 Autodesk AutoCAD 2008 LT CA
7 Autodesk AutoCAD 2010 LT CA
17 mail2disk Professional MA
20 Microsoft Office 2003 Basic Edition OF
22 Microsoft Office 2007 Small Business OF
26 Microsoft Windows Vista Business BS
27 Microsoft Windows Vista Ultimate 64BIT SP1 BS
28 Microsoft Windows XP Professional BS
29 Microsoft WinNT CAL 4.0 CL
30 Mircosoft Windows 7 Professional BS
31 Nero 7 Essentials BP
32 Nero 8 Essentials BP
33 Nero Suite 1 BP
34 Pinnacle Studio 7 ME
36 Roxio Creator 9.0 DE BP
37 Roxio Creator 10.3 DE BP
38 Sonic DigitalMedia 7 LE BP
39 Sonic RecordNow 7.3 LE BP
41 Thumbs Plus 6 MV
43 Cyberlink PowerDirector PRO 2.5 VE ME
44 WinZip 10.0 ZP
45 Microsoft Windows Server 2008 R2 BS
46 Adobe Acrobat 9.0 Standard PE
47 Autodesk AutoCAD 2011 Architecture CA
48 Autodesk AutoCAD 2011 LT CA
49 Bentley Microstation V8i CA
50 Microsoft Office 2010 Home and Business OF
51 Mircosoft Server 2008 RDS CAL CL
52 Autodesk AutoCAD 2012 Architecture CA
53 Autodesk AutoCAD 2012 LT CA
55 PyroSim SM
57 Adobe Acrobat X Standard PE
59 Roxio Creator Starter BP
60 Microsoft HP Windows Server 2012 CAL CL
61 Microsoft Windows Server 2012 R2 Standard BS
62 LANCOM Advanced VPN Client VP
63 Autodesk AutoCAD LT 2015 CA
64 Autodesk Building Design Suite Standard 2015 CA
65 HP iLO advanced 1-SRV incl. 1YR TS&U HP
66 Microsoft Office 2013 Home & Business OF
67 Autodesk AutoCAD LT 2016 CA
68 Autodesk Building Design Suite Standard 2016 CA
69 Autodesk Building Design Suite Standard 2014 CA
70 Autodesk Building Design Suite Standard 2013 CA
71 Autodesk AutoCAD LT 2014 CA
72 Autodesk AutoCAD LT 2013 CA
73 Luurens CA
74 PDF-XChange Editor PE
75 Windows 10 Pro (64 Bit) BS
76 Microsoft Office 2016 Home & Business OF

type für Betriebssystem = BS
Adobe = PE
CAD = CA
office = of
 
Hrm. Leider sind die Tabellen und Inhalte unbekannt bzw. ich werde das jetzt nicht reverse ergründen und die Tabellen erstellen. Hint: Es kann nützlich sein, bei sowas einfach mal die CREATE TABLE - Befehle und Demodaten via INSERT-Befehle zu zeigen, das hilft, es nachzuvollziehen.

Aus Deinem ersten Post sehe ich, daß Du eine Tabelle wie folgt hast:

Code:
test=*# select * from micky ;
 location | raum |   usr   | pcnr | software
----------+------+---------+------+----------
 air      |    1 | mueller |    2 | win
 air      |    1 | mueller |    2 | office
 air      |    1 | mueller |    2 | v8
 air      |    1 | schmidt |    1 | win
 air      |    1 | schmidt |    1 | v7
 air      |    1 | schmidt |    1 | office
(6 rows)

und wohl suchst:

Code:
test=*# select location, raum, usr, pcnr, string_agg(case when software ~ 'win' then software else null end,'') as betriebssystem, string_agg(case when software ~ '^v\d$' then software else null end,'') as v_software, string_agg(case when software ~ 'office' then software else null end,'') as office from micky group by location, raum, usr, pcnr;
 location | raum |   usr   | pcnr | betriebssystem | v_software | office
----------+------+---------+------+----------------+------------+--------
 air      |    1 | mueller |    2 | win            | v8         | office
 air      |    1 | schmidt |    1 | win            | v7         | office
(2 rows)

test=*#

Hilft das?
 
Werbung:
Zurück
Oben