2009-11-05 10 views
1

Comment écrire une requête SQL en utilisant la fonction IIf? Par exemple, je voudrais écrire quelque chose comme ceci:Requête Ilf et SQL

SELECT priceNetto, vat, 
    PriceBrutto:Ilf(Country="ABC", priceNetto*1.22, priceNetto) 

mais il ne compilera pas.

PriceBrutto est une colonne dynamique (il n'y a pas de colonne dans la requête, mais je voudrais "construire" cette colonne par programme comme dans mon exemple).

Répondre

5

Vous pouvez l'utiliser comme ceci:

SELECT priceNetto, vat, IIf(Country='ABC', priceNetto*1.22, priceNetto) AS PriceBrutto, ... 
+1

Fonctionne! Merci beaucoup! – Dariusz

+0

@dario, je suis content de pouvoir aider :-) –

0

Essayez:

SELECT priceNetto, cuve, IIF (Pays = "ABC", priceNetto * 1,22, priceNetto) comme PriceBrutto ...

0

une variation sur le thème, un peu plus facile à suivre à mes yeux:

SELECT priceNetto, vat, 
     priceNetto * IIf(Country='ABC', 1.22, 1) AS PriceBrutto, 
     ... 

Notez que les données t ype du résultat de l'expression va changer en fonction de la valeur de Country, ce qui est un peu étrange. Si Country = 'ABC' alors le résultat est presque certain d'être contraint de taper DECIMAL. Est-ce votre intention? Peut-être que oui: on dirait que vous appliquez des taxes et que les pièces du type DECIMAL d'Access Database Engine sont arrondies par troncature, de la même manière que le bureau des impôts; D'autres types présentent des arrondis banquiers qui n'est probablement pas l'algorithme d'arrondi correct pour l'impôt dans mon expérience. Cependant, si vous ne voulez pas de résultat DECIMAL, vous devez explicitement convertir le résultat ou les multiplicateurs en le type requis.