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 

Je vais avoir des doublons dans A, B, C (qui devrait) Je suis en train de faire une condition conserver la valeur en A et mis à NULLS les valeurs qui se répètent en B OU CComment mettre à zéro les valeurs de la colonne B et de la colonne C si elles existent déjà sur la colonne A sql?

SI A = B ou C, puis maintenir A et B ou C SET à NULLS

enter image description here

Merci, les gars,: D

Répondre

0

Est-ce ce que vous voulez?

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

Si vous devez faire ceci en ligne, peut-être un cas aidera. Si la table est grande, cela peut-être cher sur la requête et en poussant cette logique dans la requête elle-même pourrait être mieux.

0

Si a, b et c a même valeur, b et c devraient fixer nulle, donc:

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

Vous pouvez utiliser 'où' si l'optimisation est intéressant!

Si vous allez à la valeur 'Select':

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