Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MSSQL]Помогите с CASE 
V
    Опции темы
lankin
Дата 3.9.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



В общем как правильно написать запрос, чтобы вернулось только 1 или 0?
передаю несколько параметров. В таблице, к примеру, 10 строк.
Вот то что я сделал:
Код

SELECT CASE 
WHEN DateBegin ='2008-09-02 00:00:00.000' AND DateEnd < '2008-09-30 00:00:00.000' THEN 1 ELSE 0 
END 
FROM DateTable


и возвращается все 10 строк, только 1 или 0:
1
1
1
0
0
0
1
0
0
0

А мне нужно только чтобы вернулось 1, если есть совпадение либо 0, если таких строк нет.
Как???
PM MAIL   Вверх
skyboy
Дата 3.9.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Код

SELECT count(*)
FROM DataTable
WHERE DateBegin ='2008-09-02 00:00:00.000' AND DateEnd < '2008-09-30 00:00:00.000'
LIMIT 1

PM MAIL   Вверх
lankin
Дата 3.9.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



LIMIT SQL2005-й не узнает((
PM MAIL   Вверх
vlksm
Дата 3.9.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.6.2007

Репутация: нет
Всего: нет



Код

SELECT
case when
sum(CASE 
WHEN DateBegin ='2008-09-02 00:00:00.000' AND DateEnd < '2008-09-30 00:00:00.000' THEN 1 ELSE 0 
END )>0 then 1 else 0 end
FROM DateTable

PM MAIL   Вверх
skyboy
Дата 3.9.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



конечно. потому что в MSSQL используется конструкция TOP вместо LIMIT.
Почему про СУБД сразу не говоришь, партизан?
PM MAIL   Вверх
Deniz
Дата 3.9.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



А что count отменили?
Код
SELECT sign(count(*))
FROM DateTable
WHERE DateBegin = '2008-09-02 00:00:00.000' AND DateEnd < '2008-09-30 00:00:00.000'


Это сообщение отредактировал(а) Deniz - 3.9.2008, 14:36


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
lankin
Дата 3.9.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



Цитата(skyboy @  3.9.2008,  13:26 Найти цитируемый пост)
Почему про СУБД сразу не говоришь, партизан? 


Простите,больше не буду...то есть буду....то есть... smile блин, в общем вы поняли smile 
vlksm,  - большое спасибо. Работает.
Всем спасибо, ребят.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.