Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Помогите чайнику с запросом / 4 сообщений из 4, страница 1 из 1
09.01.2003, 07:29
    #32087858
Polaris
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите чайнику с запросом
В таблице flat есть 2 поля - число балконов (numbalcon) и лождий (numlodgia)
Нужно выбрать их так, чтобы если оба значения не null, вывелось 2/3 (numbalcon/numlodgia), если хотя бы одно null - то просто вывелось другое.
...
Рейтинг: 0 / 0
09.01.2003, 08:32
    #32087874
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите чайнику с запросом
Я думаю, что это на клиенте делать надо. Получи данные, а потом выведи их в том виде, в каком тебе надо. В делфях можно Calculated Fields заюзать.
...
Рейтинг: 0 / 0
09.01.2003, 10:29
    #32087918
pima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите чайнику с запросом
Неее, в дельфях это шибко долго и нудно. Проще на СКЛ.

Во-первых, что вам надо вывести, если оба поля не null: результат деления или просто строковое представление цифр через дробь? Итак, погнали:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
create table #flat(numbalcon int null, numlodgia int null)
insert into #flat values( 2 , null)
insert into #flat values(null,  3 )
insert into #flat values( 2 ,  3 )

select   --вариант 1: результат деления
 
case 
    when not(numbalcon is null) and not(numlodgia is null)
	then convert(float, numbalcon)/convert(float, numlodgia)
    when not(numbalcon is null) and numlodgia is null
	then numbalcon
    when numbalcon is null and not(numlodgia is null)
	then numlodgia
    end
from #flat
 /*  2.0
    3.0
    0.66666666666663*/ 

select   --вариант 2: строковое представление
 
case 
    when not(numbalcon is null) and not(numlodgia is null)
	then convert(varchar( 4 ), numbalcon) + '/'+ convert(varchar( 4 ), numlodgia)
    when not(numbalcon is null) and numlodgia is null
	then convert(varchar( 4 ),numbalcon)
    when numbalcon is null and not(numlodgia is null)
	then convert(varchar( 4 ),numlodgia)
    end
from #flat
 /*  2
    3
    2/3 */ 

drop table #flat



Только вот не знаю как нули после запятой в первом варианте выкинуть :(
Думать надо
...
Рейтинг: 0 / 0
25.03.2003, 09:42
    #32126249
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите чайнику с запросом
Практически любой SQL сервер поддерживает конструкции типа IIF() или CASE, позволяющие возвращать в SELECT данные в зависимости от условий.
В DB2 это выглядело бы так:
select ...,CASE WHEN numbalcon IS NULL AND numlodgia IS NULL THEN 2/3 WHEN numbalcon IS NULL THEN numlodgia WHEN numlodgia IS NULL THEN numbalcon ELSE numbalcon/numlodgia END AS myname, ...
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Помогите чайнику с запросом / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]