SQL — создать столбец в SELECT для проверки равенства

#sql #tsql #select

#sql #tsql #выберите

Вопрос:

В SQL Server я имею дело с этими столбцами:

tblSchedule


ИДЕНТИФИКАТОР
StaffID
startTime
EndTime

Я хочу включить логическое поле в свой результирующий набор, которое указывает, равны ли время начала и время окончания. Что-то аналогичное этому:

 SELECT StaffID, StartTime, EndTime, (StartTime = EndTime) AS AreEqual
FROM tblSchedule Where StaffID = xxx
  

Но я не уверен в фактическом синтаксисе для подобной операции.

Комментарии:

1. Ваше решение стандартное, должно сработать.

2. Это решение выдавало мне ошибку в SQL Server Mangement Studio. Оператор CASE ..ELSE, каким бы неэлегантным он ни выглядел, сработал как по волшебству.

3. @Andrew Lazarus: верно, что он соответствует стандарту SQL-99, т.е. BOOLEAN типу данных. Однако SQL Server не реализовал эту часть стандарта. Возможно, SQL Server должен реализовать это, но правда в том, что у него еще нет логического типа данных.

Ответ №1:

Я думаю, это то, что вы ищете

 SELECT  StaffID
        , StartTime
        , EndTime
        , Case
          When StartTime = EndTime Then 1
          else  0
        End as AreEqual
FROM    tblSchedule
Where   StaffID = xxx
  

Ответ №2:

Попробуйте использовать CASE WHEN в вашем SELECT заявлении; что-то вроде этого:

 SELECT CASE WHEN StartTime = EndTime THEN 1 ELSE 0 END AS AreEqual
FROM MyTable