任何人都可以帮助这个查询,我是mssql的新手,我试图返回一个特定的值,取决于tblWJC.WJCStatusID行中返回的值。所以例如,如果WJCStatusID是> 2但是< 4我想在生产中返回""
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 :(得分: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