2010-11-20 6 views
-2

J'ai une requête comme ceSQL Server CASE Expression

Il y a une principale expression CASE, si le résultat est 1, alors je dois exécuter les autres déclarations de cas et d'autre, l'instruction select ci-dessous. Cette requête ne fonctionne pas. Quelqu'un peut-il me aider

DECLARE @sportCodeID INT; 
SELECT @sportCodeID = sport_code_id FROM jobs dlj where dlj.id = id; 

(CASE WHEN (SELECT sport_code_id FROM jobs dlj WHERE dlj.id = id) = 1 THEN 

CASE WHEN dl.action = 'C' THEN 'Cricker' 

WHEN dl.action = 'F' THEN 'FOOTBALL' 

) 
(ELSE 
(SELECT sport_codes from action_codes ac WHERE ac.id = @sportCodeID) 

)END [Action] 
+0

Qu'entendez-vous par "ne fonctionne pas"? Je vois déjà deux erreurs de syntaxe, mais qu'essayez-vous d'accomplir? Vous voulez juste sélectionner le texte "Cricket" ou "Football"? – BeemerGuy

+0

et il serait utile si vous formatez votre code en utilisant le bouton de code lors de la modification de la question. – BeemerGuy

+2

S'il vous plaît, utilisez uniquement des étiquettes pertinentes pour vos questions. Cela n'a rien à voir avec C#. –

Répondre

1

Voici un code qui peut atteindre votre objectif

declare @jobs table(id int identity (1,1), sport_code_Id int) 
insert @jobs (sport_code_Id) 
Select 1 UNION ALL 
Select 2 UNION ALL 
Select 3 UNION ALL 
Select 4 

declare @action_codes table (id int identity(1,1), sport_codes char(1)) 
Insert @action_codes (sport_codes) 
Select '1' UNION ALL 
Select 'F' UNION ALL 
Select 'C' UNION ALL 
Select '4' 

Select * from @action_codes 
Select * from @jobs 

DECLARE @sportCodeID INT; 
SELECT @sportCodeID = sport_code_id FROM @jobs dlj where dlj.id = 1; 
select @sportCodeID 
SELECT 
    CASE sport_codes 
     WHEN 'F' THEN 'Football' 
     WHEN 'C' THEN 'Criket' 
     ELSE sport_codes 
    END 
FROM @action_codes 
WHERE id = @sportCodeID 

Si vous continuez à avoir des questions s'il vous plaît se référer à l'exemple ci-dessous sur une déclaration de cas à l'aide du databse AdventureWorks.

USE AdventureWorks2008; 
GO 
SELECT ProductNumber, Category = 
     CASE ProductLine 
     WHEN 'R' THEN 'Road' 
     WHEN 'M' THEN 'Mountain' 
     WHEN 'T' THEN 'Touring' 
     WHEN 'S' THEN 'Other sale items' 
     ELSE 'Not for sale' 
     END, 
    Name 
FROM Production.Product 
ORDER BY ProductNumber; 
GO