2017-02-22 5 views
0

ich die unter Frage haben,Erhalten Sie unterschiedliche Werte einer Spalte

SELECT v.pattern_id, 
     v.id, 
     v.pdb_id           AS viocardId, 
     p.pdb_id           AS PID, 
     s.vio_id           AS SiVioId, 
     r.date            AS orcdate, 
     s.created_date          AS sivcreateddate, 
     r.job_id, 
     r.maskset, 
     r.device, 
     d.tech_geometry, 
     r.layer, 
     r.layer_rev, 
     r.ptrf, 
     r.operation, 
     Concat_ws('_', d.tech_geometry, r.layer, p.pdb_id) AS techlayer 
FROM orc_orcviolation v, 
     orc_orcpattern p, 
     siverify_siverifyverificationsite s, 
     orc_orccheck o, 
     orc_orcrecord r, 
     siverify_siverifyverificationdevice d 
WHERE v.pattern_id = p.id 
     AND p.pdb_id = s.pattern_id 
     AND p.if_target = s.if_target 
     AND p.if_secure <> 1 
     AND s.create_status <> 5 
     AND v.check_id = o.id 
     AND o.record_id = r.id 
     AND d.id = s.si_device_id 
     AND r.maskset <> 'MT23RUN1' 
     AND r.maskset <> 'M25RUN3' 
     AND r.ptrf NOT LIKE '%PTRF-20251-%' 
     AND d.fab LIKE '%FAB 1%' 
     AND v.id > (SELECT v1.id 
        FROM orc_orcviolation v1, 
          orc_orcpattern p1, 
          siverify_siverifyverificationsite s1, 
          orc_orccheck o1, 
          orc_orcrecord r1, 
          siverify_siverifyverificationdevice d1 
        WHERE v1.pattern_id = p1.id 
          AND p1.pdb_id = s1.pattern_id 
          AND p1.if_target = s1.if_target 
          AND p1.if_secure <> 1 
          AND s1.create_status <> 5 
          AND v1.check_id = o1.id 
          AND o1.record_id = r1.id 
          AND d1.id = s1.si_device_id 
          AND r1.maskset <> 'MT23RUN1' 
          AND r1.maskset <> 'M25RUN3' 
          AND r1.ptrf NOT LIKE '%PTRF-20251-%' 
          AND d1.fab LIKE '%FAB 1%' 
          AND v1.id = s1.vio_id 
          AND s1.vio_id = s.vio_id) 
     AND r.date > s.created_date; 

Was ich brauche, ist, ich brauche für die Spalte r.job_id nur unterschiedliche Werte zu erhalten. Meine Ausgabe für die obige Abfrage aussieht,

 pattern_id id viocardId PID SiVioId orcdate sivcreateddate   job_id maskset device tech_geometry layer layer_rev ptrf operation techlayer 
    702627 2038025 8270564 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455 
    702627 2038027 8270566 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455 
    702627 2038029 8270568 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455 
    702627 2112780 8425263 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455 
    702627 2112783 8425266 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455 
    702627 2112784 8425267 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455 
    702627 2240805 8558618 4298455 1939970 8/27/2016 8:35 12/23/2015 1:14 504071 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AY PTRF-45862-3610 orc 0.022UM_RX_4298455 
    702627 2240807 8558620 4298455 1939970 8/27/2016 8:35 12/23/2015 1:14 504071 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AY PTRF-45862-3610 orc 0.022UM_RX_4298455 

In der oben op, für die PID (4.298.455), wir drei job_ids (442896,471956,504071) sehen konnte. Ich wollte die Wiederholung von job_ids entfernen, und im Idealfall sollten meine op aussehen,

pattern_id id viocardId PID SiVioId orcdate  sivcreateddate job_id maskset device tech_geometry layer layer_rev ptrf operation techlayer 
702627 2038025 8270564 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455 
702627 2112780 8425263 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455 
702627 2240805 8558618 4298455 1939970 8/27/2016 8:35 12/23/2015 1:14 504071 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AY PTRF-45862-3610 orc 0.022UM_RX_4298455 

Ich glaube nicht eine Sub-Abfrage Erstellen nur für unterschiedliche Werte von r.job_id eine kluge Wahl sein würde, wie es die stören könnte andere Teile der Abfrage. Irgendwelche Möglichkeiten, dies zu tun? Danke im Voraus.

+0

Die einzigen zwei Spalten zu aktualisieren, die Werte von einer Zeile zur anderen von Ihrer ursprünglichen Daten sind 'id' und' viocardId' und auf dem gewünschten Ergebnis abweichen, Sie werden immer die kleinere Werte für beide, da alle Daten gleich sind, aber zwei Sie könnten alle Felder auswählen und diese zwei mit min zusammen. Etwas wie: 'select pattern_id, min (id), min (vocardId), PID, SiVioId ... (alle anderen columnsn) ... (Rest von select) .... group by (alle Felder außer diesen beiden)' Probieren Sie, ob es funktioniert –

Antwort

0

Sie könnten versuchen, Ihre Anfrage

SELECT v.pattern_id, 
     MIN(v.id), 
     MIN(v.pdb_id)          AS viocardId, 
     p.pdb_id           AS PID, 
     s.vio_id           AS SiVioId, 
     r.date            AS orcdate, 
     s.created_date          AS sivcreateddate, 
     r.job_id, 
     r.maskset, 
     r.device, 
     d.tech_geometry, 
     r.layer, 
     r.layer_rev, 
     r.ptrf, 
     r.operation, 
     Concat_ws('_', d.tech_geometry, r.layer, p.pdb_id) AS techlayer 
FROM orc_orcviolation v, 
     orc_orcpattern p, 
     siverify_siverifyverificationsite s, 
     orc_orccheck o, 
     orc_orcrecord r, 
     siverify_siverifyverificationdevice d 
WHERE v.pattern_id = p.id 
     AND p.pdb_id = s.pattern_id 
     AND p.if_target = s.if_target 
     AND p.if_secure <> 1 
     AND s.create_status <> 5 
     AND v.check_id = o.id 
     AND o.record_id = r.id 
     AND d.id = s.si_device_id 
     AND r.maskset <> 'MT23RUN1' 
     AND r.maskset <> 'M25RUN3' 
     AND r.ptrf NOT LIKE '%PTRF-20251-%' 
     AND d.fab LIKE '%FAB 1%' 
     AND v.id > (SELECT v1.id 
        FROM orc_orcviolation v1, 
          orc_orcpattern p1, 
          siverify_siverifyverificationsite s1, 
          orc_orccheck o1, 
          orc_orcrecord r1, 
          siverify_siverifyverificationdevice d1 
        WHERE v1.pattern_id = p1.id 
          AND p1.pdb_id = s1.pattern_id 
          AND p1.if_target = s1.if_target 
          AND p1.if_secure <> 1 
          AND s1.create_status <> 5 
          AND v1.check_id = o1.id 
          AND o1.record_id = r1.id 
          AND d1.id = s1.si_device_id 
          AND r1.maskset <> 'MT23RUN1' 
          AND r1.maskset <> 'M25RUN3' 
          AND r1.ptrf NOT LIKE '%PTRF-20251-%' 
          AND d1.fab LIKE '%FAB 1%' 
          AND v1.id = s1.vio_id 
          AND s1.vio_id = s.vio_id) 
     AND r.date > s.created_date; 
GROUP BY 
     v.pattern_id, 
     PID, 
     SiVioId, 
     orcdate, 
     sivcreateddate, 
     r.job_id, 
     r.maskset, 
     r.device, 
     d.tech_geometry, 
     r.layer, 
     r.layer_rev, 
     r.ptrf, 
     r.operation, 
     techlayer 
Verwandte Themen