在SQL Server 2008中使用列别名指定数据类型

Bre*_*ent 12 sql t-sql sql-server sql-server-2008

想象一下,我在视图中有以下SELECT语句(SQL Server 2008):

SELECT (SELECT CASE 
                 WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y' THEN 1 
                 ELSE 0 
               END) AS OOS 
  FROM HISTORY
Run Code Online (Sandbox Code Playgroud)

OOS列最终是int类型,但我希望它是bit类型.我怎么能做到这一点?

OMG*_*ies 24

使用CAST/CONVERT显式定义数据类型:

SELECT CAST (CASE 
               WHEN LOWER(h.outofserv) = 'y' THEN 1 
               ELSE 0 
             END AS BIT) AS OOS 
 FROM HISTORY h
Run Code Online (Sandbox Code Playgroud)