#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