2017-02-08 1 views
0
Select BillName as A, ConsigneeName as B, ShipperName as C 
           from Sum_Orders 
           where (OrderStatus in ('Complete','Invoiced') 
    ) 
    and 
    OrderPeriodYear IN (
    (
    YEAR(GETDATE())-1 
    ) 
    ) 
    Group by billname,ConsigneeName,ShipperName 

Ich habe Duplikate in A, B, C (voraussichtlich) Ich versuche, den Wert in A eine Bedingung halten und setzen, um die Werte zu Null setzt, die in B oder C wiederholenWie setzt man die Werte von Spalte B und Spalte C auf Null, wenn sie bereits in Spalte A sql vorhanden sind?

IF A = ​​B oder C dann A halten und SET B oder C

enter image description here

NULLS Danke, Jungs,: D

Antwort

0

Wollen Sie das?

update t 
    set B = (case when B <> A then B end), 
     C = (case when C <> A then C end) 
    where B <> A or C <> A; 
0

Wenn Sie dies inline tun müssen, hilft vielleicht ein Fall.

Wenn die Tabelle groß ist, ist dies bei der Abfrage möglicherweise teuer und diese Logik in die Abfrage selbst zu schieben könnte besser sein.

0

Wenn a, b und c hat denselben Wert, b und c sollte null gesetzt, so:

Update tablename 
Set B = if(A=B, null, B) , C=if(A=C, null, C) 
-- where A=B or A=C 

Sie können mit 'wo', wenn Optimierung ist interessant!

Wenn du gehst auf 'Select' Wert:

Select A, if(A=B, null, B) as B , if(A=C, null, C) as C from tablename 
Verwandte Themen