powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Помогите чайнику с запросом
4 сообщений из 4, страница 1 из 1
Помогите чайнику с запросом
    #32087858
Polaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице flat есть 2 поля - число балконов (numbalcon) и лождий (numlodgia)
Нужно выбрать их так, чтобы если оба значения не null, вывелось 2/3 (numbalcon/numlodgia), если хотя бы одно null - то просто вывелось другое.
...
Рейтинг: 0 / 0
Помогите чайнику с запросом
    #32087874
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Я думаю, что это на клиенте делать надо. Получи данные, а потом выведи их в том виде, в каком тебе надо. В делфях можно Calculated Fields заюзать.
...
Рейтинг: 0 / 0
Помогите чайнику с запросом
    #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
Помогите чайнику с запросом
    #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]