2010-05-11 4 views
1

Comment est-ce que je filtrerais cette requête pour ne montrer aucun article où "discontinued = 1" et quantité = 0 "? Je ne veux pas exclure tous les articles avec une valeur de discontinued = 1. applique uniquement si l'élément a la valeur de fin de série = 1 et la quantité = 0.Déclaration conditionnelle dans le serveur sql 2k5

select sku,producttitle,location,pt_type as type, vendor_name, 
    active,pricestatus, disc as discontinued,season,yourprice as 
    customerprice,costprice,quantity,stockvalue 

    from getskus 

Répondre

2
WHERE NOT (discontinued = 1 AND quantity = 0) 

, ce qui représente exactement ce que vous voulez exprimer. vous excluez (mot-clé NOT) lignes satisfaisant fois (mot-clé AND) vos conditions désirées

0
SELECT sku, 
     producttitle, 
     location, 
     pt_type AS TYPE, 
     vendor_name, 
     ACTIVE, 
     pricestatus, 
     disc AS discontinued, 
     season, 
     yourprice AS customerprice, 
     costprice, 
     quantity, 
     stockvalue 
FROM getskus 
WHERE NOT (disc = 1 AND quantity = 0) 

vous pouvez également modifier la direction comme celui-ci

SELECT sku, 
     producttitle, 
     location, 
     pt_type AS TYPE, 
     vendor_name, 
     ACTIVE, 
     pricestatus, 
     disc AS discontinued, 
     season, 
     yourprice AS customerprice, 
     costprice, 
     quantity, 
     stockvalue 
FROM getskus 
WHERE disc <> 1 
     OR quantity <> 0 

Mais je préférerais le premier

+0

Êtes-vous sûr que le premier est plus rapide? Je serais surpris s'il était possible d'optimiser le plan de requête en faisant de simples transformations booléennes ... – Heinzi

+0

désolé de dire que –

0
select sku 
     ,producttitle 
     ,location 
     ,pt_type as type 
     ,vendor_name 
     ,active 
     ,pricestatus 
     ,disc as discontinued 
     ,season 
     ,yourprice as customerprice 
     ,costprice 
     ,quantity 
     ,stockvalue 
from getskus 
WHERE NOT (disc = 1 and quantity= 0)