Это зависит от того, что вы хотите, чтобы оператор case делал.
Например, допустим, вы хотите вернуть значение в зависимости от занятости. В этом случае ваш оператор case должен быть частью предложения select
.
Create View v_classroom
AS
SELECT
A.roomcode
,A.roomname
,A.deviceID
,B.occupancy
,case -- This returns a new column 'Occupancy_result' with the case statement result
when occupancy >= 5 then 'ROOM FULL'
when occupancy = 0 then 'ROOM EMPTY'
else 'ROOM PARTIALLY FULL'
end as Occupancy_Result
,B.Temperature
,B.localtime
,C.classend
,C.classstart
,C.subject
From devicemessage b
inner join device A
ON b.deviceID = A.deviceId
inner join classtimetable C
on A.roomcode = c.roomid
Если вы хотите фильтровать ваших результатов на основе их значений, лучшим выбором будетбыть оператором where
после предложений join
.
Create View v_classroom
AS
SELECT
A.roomcode
,A.roomname
,A.deviceID
,B.occupancy
,B.Temperature
,B.localtime
,C.classend
,C.classstart
,C.subject
From devicemessage b
inner join device A
ON b.deviceID = A.deviceId
inner join classtimetable C
on A.roomcode = c.
where occupancy <= 5 -- This filters out any results that do not meet the condition
Если ни одно из этих решений само по себе не соответствует вашим потребностям, комбинация из двух может быть ответом. Вы можете использовать оператор case в предложении select
, а затем отфильтровать результирующие значения в операторе where
.