Ich habe eine Tabelle, die die folgenden Felder enthält:

Das Datum, die Uhrzeit, der Kurs, OR, L1R, L2R, L3R

Ich möchte nur Werte zurückgeben, wenn eine Gruppe (Thetime) nicht den Wert "0" in der L3Ra-Spalte enthält.

Ich habe die folgende Anweisung ausprobiert, aber sie entfernt nur die Werte, die die "0" enthalten, wobei ich die gesamte Gruppe entfernen möchte

  SELECT *
FROM orclass t
WHERE t.l3r NOT IN
   (SELECT s.l3r  
    FROM  orclass s
    WHERE s.l3r = '0')
    and Thedate = "2019-01-18"
ORDER BY t.Thetime

Was ich tun möchte, ist alle Gruppen (Thetime) zu entfernen, die eine "0" in der L3R-Spalte enthalten.

Thetime L1R L2R L3R
  12:00  1     2   1
  12:00  1     2   0
  13:00  1     1   1
  13:00  2     0   8
  14:00  2     4   9
  14:00  0     3   6

Würde werden:

Thetime L1R L2R L3R
  13:00  1     1   1
  13:00  2     0   8
  14:00  2     4   9
  14:00  0     3   6

Weil die Gruppe 12:00 eine "0" in LR3 enthält

0
Jarratt Perkins 18 Jän. 2019 im 12:22

4 Antworten

Beste Antwort

Sie könnten dies verwenden:

SELECT *
FROM orclass o
WHERE Thedate = "2019-01-18"
    AND NOT EXISTS
    (
        SELECT 1
        FROM  orclass o1
        WHERE o1.Thedate = o.Thedate 
            AND o1.Thetime = o.Thetime 
            AND o1.lr3 = '0'
    )
ORDER BY Thetime;
1
Pham X. Bach 18 Jän. 2019 im 09:31

Sie müssen nur Ihre erste where-Klausel in t.Thetime anstelle von t.l3r wie folgt ändern:

SELECT *
FROM orclass t
WHERE t.Thetime NOT IN
   (SELECT s.Thetime 
    FROM  orclass s
    WHERE s.l3r = '0')
    and Thedate = "2019-01-18"
ORDER BY t.Thetime
0
nacho 18 Jän. 2019 im 09:29

Verwenden Sie eine korrelierte Unterabfrage

select t1.* from table_name t1 
where  not exists ( select 1 from table_name t2 where t2.Thetime=t1.Thetime
                                and L3R =0)
0
Zaynul Abadin Tuhin 18 Jän. 2019 im 09:46

Wir können eine EXISTS -Klausel verwenden, um dies zu überprüfen:

SELECT
    s1.Thetime,
    s1.L1R,
    s1.L2R,
    s1.L3R
FROM orclass s1
WHERE NOT EXISTS (SELECT 1 FROM orclass s2
                  WHERE s1.Thetime = s2.Thetime AND s2.L3R = 0);

Demo

0
Tim Biegeleisen 18 Jän. 2019 im 09:57