Ответ 1
Используйте CAST/CONVERT, чтобы явно определить тип данных:
SELECT CAST (CASE
WHEN LOWER(h.outofserv) = 'y' THEN 1
ELSE 0
END AS BIT) AS OOS
FROM HISTORY h
Предположим, у меня есть следующая инструкция SELECT в представлении (SQL Server 2008):
SELECT (SELECT CASE
WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y' THEN 1
ELSE 0
END) AS OOS
FROM HISTORY
Столбец OOS заканчивается типом int, но я бы хотел, чтобы он был бит типа. Как я могу это сделать?
Используйте CAST/CONVERT, чтобы явно определить тип данных:
SELECT CAST (CASE
WHEN LOWER(h.outofserv) = 'y' THEN 1
ELSE 0
END AS BIT) AS OOS
FROM HISTORY h
вы должны использовать CAST(1 as bit)
и CAST(0 as bit)
вместо 1 и 0:
SELECT (CASE WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y'
THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END) AS OOS
FROM HISTORY
Здесь вы можете получить желаемый тип данных BIT и с небольшим чистым кодом, используя:
литая()
ВЫБРАТЬ КАСТ (CASE
КОГДА ВЕРХНИЕ (History.OutofServ) = 'Y' THEN 1
ELSE 0 END AS BIT) AS OOS
FROM History
Я надеюсь, что это поможет.