Dałem dużo czasu, spróbuję go rozwiązać, ale nie mógł sięgać do rozwiązania.
Poniżej znajdują się moje stoły. Próbuję to usunąć, to usunąć od T1, gdy PO, SKU, LOC i REC mecze między T1 a T2 i T2.St d, ale sama, SKU, LUB powinna istnieć w T1, dla której nie jest null.

T1

PO | SKU| LOC | ASN |REC | allID
a    b    c      e    NULL  NULL
a    b    c      g     g     12

T2

PO |SKU |LOC |ASN   |REC |ST
a    b    c   NULL    g   D

Z góry powinienem, aby usunąć drugi rząd z T1 jako pierwszego rzędu, SKU, LOC istnieje AS ASN nie jest null.

Dziękuję Ci.

0
Amir 15 luty 2017, 15:04

1 odpowiedź

Najlepsza odpowiedź

Dosłowna interpretacja twojego pytania zamienia się w dwa exists klauzule:

delete t1
    where exists (select 1 
                  from t2
                  where t2.PO = t1.PO and t2.SKU = t1.SKU and
                        t2.LOC = t1.LOC and t2.REC = t1.REC and
                        t2.ST = 'D'
                 ) and
           exists (select 1
                   from t1 tt1
                   where tt1.PO = t1.PO and tt1.SKU = t1.SKU and
                         tt1.LOC = t1.LOC and tt1.asn is not null
                  );

Nie jestem w 100% pewien, że to właśnie chcesz - usunie one Wszystkie rzędy, które pasują. Jeśli nie jest tym, czego chcesz, powinieneś zapytać inne pytanie . To pytanie już ma odpowiedzi i jest niegrzeczna, aby zmienić pytanie w sposób, który unieważnia odpowiedzi.

1
Gordon Linoff 15 luty 2017, 12:10