2010-02-18 12 views
0

Voici ma description de la table:Sql requête avec Select et IF

Nom de la table: Les commandes

Colonnes: ID, NO, Quantité, Base, Code

Première ma requête doit vérifier la valeur de Code, si la valeur de Code est 'B' alors OUTPUT VALUE devrait être Code + Base si ce n'est pas 'B' alors OUTPUT VALUE devrait être Code + Quantité

les lignes obtenues seront de nouveau filtrées en utilisant where clause where ID = '' et quantité = ''

Comment puis-je former cette requête complexe, des idées? ...

Répondre

3

modifié Réponse

Quelque chose me dérangeait au sujet de mon message original (voir ci-dessous, mais ne pas utiliser) donc je suis retourné à vérifier. Si le code est 'B' (donc un varchar) et que la quantité est un entier, alors SQL ne vous laissera pas les ajouter pour des raisons évidentes et ne fera pas une conversion implicite pour vous (au moins il ne le fait pas pour moi). J'ai donc dû convertir Quantity en un varchar pour pouvoir l'utiliser.

Regardez le code de travail suivant construit sur SQL Server 2008

DECLARE @MyTable TABLE 
(
    ID int identity (1, 1), 
    Num int, 
    Quantity int, 
    Base varchar (1), 
    Code varchar (1) 
) 

INSERT INTO @MyTable VALUES 
    (1, 1, 'a', 'A') 
, (2, 2, 'b', 'B') 
, (3, 3, 'c', 'C') 
, (4, 4, 'd', 'D') 
, (5, 5, 'e', 'E') 

SELECT * FROM @MyTable 

SELECT 
    CASE WHEN Code = 'B' THEN Code+Base 
    ELSE Code+CONVERT (VarChar, Quantity) 
    END AS OutputValue 
FROM @MyTable 

Réponse originale (ne pas utiliser)

essayez le

suivant
SELECT CASE WHEN Code = 'B' THEN Code+Base ELSE Code+Quantity END AS OutputValue 
FROM MyTable 
WHERE ID = @Id 
and Quantity = @Quantity 
+0

Que ks beaucoup .. ça a marché .. – msbyuva

0
SELECT CASE Code WHEN 'B' THEN Code + Base ELSE Code + Quantity END As OutputValue 
FROM Orders 
WHERE ID = @id AND Quantity = @quantity 
0
SELECT 
(
    CASE Code 
     WHEN CODE = 'B' THEN Code+Base 
     ELSE Code+Quantity 
    END 
) AS OutputValue 
FROM Orders 
WHERE ID = '' AND Quantity=''