2014-12-22 2 views
0

Может ли кто-нибудь помочь в этом вопросе, я новичок в mssql, и я пытаюсь вернуть определенное значение, зависящее от значения, возвращаемого в строке tblWJC.WJCStatusID. так, например, если WJCStatusID> 2, но < 4 Я хочу вернуться "в производстве"ELSE IF оператор, который возвращает определенные значения

SQL QUERY

SELECT tblWJCItem.AddedDescription, 
tblWJC.WJCPrefix + Convert(Varchar(10),tblWJC.WJCNo) AS OurRef, 
tblWJCItem.MaterialName, tblStockFamily.StockFamily, 
tblWJCItem.WeightToSend, 
tblWJC.DateCreated, 
tblWJC.WJCStatusID 
FROM tblWJC 
INNER JOIN tblWJCItem ON tblWJC.WJCID = tblWJCItem.WJCID 
INNER JOIN tblStockFamily ON tblWJCItem.ProductFamilyID = tblStockFamily.StockFamilyID 
IF tblWJC.WJCStatusID < 2 PRINT 'Pre Production' 
ELSE IF tblWJC.WJCStatusID < 4 PRINT 'In Production' 
ELSE IF tblWJC.WJCStatusID > 4 PRINT 'Ready To Ship' 
ELSE PRINT 'Awaiting Lab Results'; 

Я также попытался следующие пункты:

IF (tblWJC.WJCStatusID) < 2 THEN 'Pre Production' 
ELSE IF (tblWJC.WJCStatusID) < 4 THEN 'In Production' 
ELSE IF (tblWJC.WJCStatusID) > 4 THEN 'Ready To Ship' 
ELSE 'Awaiting Lab Results'; 

Я нахожусь используя MSSQL, и я не могу заставить это работать правильно, поскольку я сказал, что я новичок в этом, поэтому я могу сделать что-то очень простое. Если кто-то может указать мне в правильном направлении, я буду очень благодарен.

+0

IF ELSE используется для управления потоком операторов. Он НЕ используется для управления логикой в ​​запросе. –

ответ

1

Используйте заявление CASE (info here on MSDN). Есть несколько вариантов, которые вы можете использовать, но приведенный ниже столбец CaseExample выполняет то, что вы пытаетесь достичь.

SELECT tblWJCItem.AddedDescription, 
tblWJC.WJCPrefix + Convert(Varchar(10),tblWJC.WJCNo) AS OurRef, 
tblWJCItem.MaterialName, tblStockFamily.StockFamily, 
tblWJCItem.WeightToSend, 
tblWJC.DateCreated, 
tblWJC.WJCStatusID, 

CASE WHEN tblWJC.WJCStatusID < 2 THEN 'Pre Production' 
    WHEN tblWJC.WJCStatusID < 4 THEN 'In Production' 
    WHEN tblWJC.WJCStatusID > 4 THEN 'Ready To Ship' 
    ELSE 'Awaiting Lab Results' -- This would only be hit when tblWJC.WJCStatusID is NULL 
    END 
    AS CaseExample 

FROM tblWJC 
INNER JOIN tblWJCItem ON tblWJC.WJCID = tblWJCItem.WJCID 
INNER JOIN tblStockFamily ON tblWJCItem.ProductFamilyID = tblStockFamily.StockFamilyID 
+0

Спасибо, Джейсон работал отлично, согласится на ваш ответ, как только смогу – Kris

Смежные вопросы