2014-06-06 3 views
1

Ma requête estComment ajouter une colonne supplémentaire à l'exécution dans SQL Server

SELECT 
    RemainingQty, CompletedQty 
FROM 
    tblJobStatus AS JT 
LEFT OUTER JOIN 
    TBLJOBWORKS AS TJ ON JobWorksId = TaskId 
LEFT OUTER JOIN 
    tblTotalJob AS T ON T.Id = JobID  
WHERE 
    JT.ProductID = '28' 
    AND ItemId = '15' 
ORDER BY 
    JobSequence ASC 

Lors de l'exécution de la requête que je reçois ce résultat

enter image description here

Maintenant, je veux ajouter une colonne supplémentaire avec ceci à l'exécution qui contiendra le statut. Si le RemainingQty est 0 et que CompletedQty est supérieur à 0, la colonne d'état contiendra l'autre instruction en attente.

comme suit image

enter image description here

Est-il possible sans une boucle?

Répondre

2

Bien sûr, pas de problème - c'est une expression CASE très simple:

SELECT 
    RemainingQty, CompletedQty, 
    Status = CASE 
       WHEN RemainingQy = 0 AND CompletedQty > 0 
       THEN 'Complete' 
       ELSE 'Pending' 
      END 
FROM 
    tblJobStatus AS JT 
LEFT OUTER JOIN 
    TBLJOBWORKS AS TJ ON JobWorksId = TaskId 
LEFT OUTER JOIN 
    tblTotalJob AS T ON T.Id = JobID  
WHERE 
    JT.ProductID = '28' 
    AND ItemId = '15' 
ORDER BY 
    JobSequence ASC 
1
select 
    ..., 
    case 
     when RemainingQty = 0 and CompletedQty > 0 then 'Complete' 
     else 'Pending' 
    end as Status 
from ... 
1
SELECT 
    RemainingQty, CompletedQty, 
    case when RamaininQty = and CompletedQty > 0 then 'Complete' else 'Pending' end as Status 
FROM 
    tblJobStatus AS JT 
LEFT OUTER JOIN 
    TBLJOBWORKS AS TJ ON JobWorksId = TaskId 
LEFT OUTER JOIN 
    tblTotalJob AS T ON T.Id = JobID  
WHERE 
    JT.ProductID = '28' 
    AND ItemId = '15' 
ORDER BY 
    JobSequence ASC 
1
SELECT 
    RemainingQty, CompletedQty, 
    Case when RemainingQty=0 and CompletedQty>0 then 'Complete' else 'Pending' end as Status 
FROM 
    tblJobStatus AS JT 
LEFT OUTER JOIN 
    TBLJOBWORKS AS TJ ON JobWorksId = TaskId 
LEFT OUTER JOIN 
    tblTotalJob AS T ON T.Id = JobID  
WHERE 
    JT.ProductID = '28' 
    AND ItemId = '15' 
ORDER BY 
    JobSequence ASC 
Questions connexes