2013-10-25 38 views
6

我試圖根據CASE WHEN THEN tsql語句返回true或false,但是唯一出現在結果面板中的是列名「IsGeneric 」。如何從tsql使用case返回true或false

我哪裏錯了?

alter proc Storefront.proc_IsProjectGeneric 

@ProjectID INT 
AS 
SET NOCOUNT ON; 

SELECT 'IsGeneric'=CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END 
       FROM Storefront.Project p WITH(NOLOCK) 
       WHERE p.ID = @ProjectID; 

SET NOCOUNT OFF; 

回答

12

您正在使用周圍的標識符,這使它成爲一個字符串,而不是單引號。

SELECT IsGeneric = CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END 
      FROM Storefront.Project p WITH(NOLOCK) 
      WHERE p.ID = @ProjectID; 
2
SELECT CASE WHEN p.[GenericCatalogID] > 0 
      THEN CAST(1 AS BIT) 
      ELSE CAST(0 AS BIT) 
     END as IsGeneric