2017-08-21 2 views
0

Je construis une requête qui ajoutera automatiquement les frais d'expédition à un prix des articles si elle est inférieure à 50 $, et un autre, plus, frais d'expédition si elle a un prix brut de plus de 50 ans que je l'ai fait quelques expériences avec CASE, SI, et SUM, mais je ne suis pas sûr de celui que je besoin.MySQL: Lorsque le prix <50, somme (prix +14)

initial:

Stock_Number Line Part_Number Q T Price 
AAB_1074901519, AAB, 1074901519, 1, AM, 120.67 
AAB_1074908119, AAB, 1074908119, 1, AM, 108.29 
AAB_1264907619, AAB, 1264907619, 1, AM, 364.49 
AAB_1294908319, AAB, 1294908319, 1, AM, 368.97 
AAB_1378254, AAB, 1378254, 1, AM, 36.18 

désiré:

AAB_1074901519, AAB, 1074901519, 1, AM, 144.67 //Because price > 50, +22 
AAB_1074908119, AAB, 1074908119, 1, AM, 130.29 //Because price > 50, +22 
AAB_1264907619, AAB, 1264907619, 1, AM, 386.49 //Because price > 50, +22 
AAB_1294908319, AAB, 1294908319, 1, AM, 390.97 //Because price > 50, +22 
AAB_1378254, AAB, 1378254, 1, AM, 50.18 //Because price < 50, +14 

Anil résolu mon problème. Merci à tous pour vos efforts!

Vous pouvez utiliser la déclaration de cas. Voici la requête. les noms de tables de substitution et les noms de colonnes.

sélectionnez le cas lorsque le prix < 50 puis le prix + coût d'expédition sinon prix fin de votre table;

+1

Commencez par partager votre table comme table de texte et vos résultats attendus également comme table de texte –

+1

nous montrer ce que vous fatigué. –

+0

la sous-requête de déclaration cas, cas d'alias comme price_s, somme de requête externe (price_s) – OregonTrail

Répondre

1

Vous pouvez utiliser la déclaration de cas. Voici la requête. Remplacez les noms de tables et les noms de colonnes.

select case when price < 50 then price + shipping cost else price end from your table; 
+0

brillant! Vous avez résolu mon problème. Merci beaucoup. Je vais utiliser cette syntaxe pour d'autres validations que j'ai voulu faire! – alleuroKyle

0

Vous pouvez utiliser cette mise à jour:

update table set price= case 
when price<50 then price+shipping_fee1 
else price+shipping_fee2 
end;