Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > [MSSQL]Помогите с CASE


Автор: lankin 3.9.2008, 13:01
В общем как правильно написать запрос, чтобы вернулось только 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, если таких строк нет.
Как???

Автор: skyboy 3.9.2008, 13:08
Код

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

Автор: lankin 3.9.2008, 13:18
LIMIT SQL2005-й не узнает((

Автор: vlksm 3.9.2008, 13:23
Код

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

Автор: skyboy 3.9.2008, 13:26
конечно. потому что в MSSQL используется конструкция TOP вместо LIMIT.
Почему про СУБД сразу не говоришь, партизан?

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

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


Простите,больше не буду...то есть буду....то есть... smile блин, в общем вы поняли smile 
vlksm,  - большое спасибо. Работает.
Всем спасибо, ребят.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)