RUS  ENG 

sql запрос к справочнику

Страницы: 1
RSS
sql запрос к справочнику
 
Добрый день. Существует необходимость выполнить запрос к группе участков, для выставления в них зарастания в зависимости от их диаметра. Т.е в группу участков поставить зарастание, допустим, 10% от диаметра. Вроде бы все просто, но есть нюанс. К полю диаметр привязан "простой справочник". Соответственно нет возможности выполнить выражение типа:
[Зарастание, мм] = [Dвнутр, м]*100,
т.к. [Dвнутр, м] не является числом. Ни один из способов преобразования в число у меня не сработал. Как можно выйти из положения не создавая дополнительных полей, не убирая справочник?
 
Если я правильно понял Ваш вопрос, то можете попробовать использовать Case.
Пример:
Код
upd ate Your_Layer
se t [Зарастание, мм] = case [Dвнутр, м]
when '100' then 100*100
when '200' then 200*100
end
from Your_Layer
Изменено: Сергей Мечев - 17.02.2023 15:56:36
 
Цитата
написал:
Если я правильно понял Ваш вопрос, то можете попробовать использовать Case.
Пример:
Код
 upd ate Your_Layer
se t [Зарастание, мм] = case [Dвнутр, м]
when '100' then 100*100
when '200' then 200*100
end
from Your_Layer
 
Да это конечно работает, но не слишком эстетично выглядит. Придется перечислить тут весь справочник. Неужели нет способа добраться до значения из справочника или заставить работать функции CAST или CONVERT? Но все равно спасибо, воспользуюсь пока тем, что вы дали.
 
Для полей с подключенным справочником можно выбирать код и/или значения из справочников, посмотрите пример на сайте

Главная | Примеры | ZuluGIS | SQL-запросы
 
Алексей, добрый день!
  1. Есть CAST, можно привести к нужному типу (float)
  2. Если само поле [Dвнутр, м] имеет физически вещественный тип, то можно использовать выражение BYREF [Dвнутр, м], чтобы использовать исходное физическое, а не справочное значение поля, как описал Дмитрий выше.
 
Цитата
написал:
Цитата
написал:
Если я правильно понял Ваш вопрос, то можете попробовать использовать Case.
Пример:
Код
  upd ate Your_Layer
se t [Зарастание, мм] = case [Dвнутр, м]
when '100' then 100*100
when '200' then 200*100
end
from Your_Layer
  
Да это конечно работает, но не слишком эстетично выглядит. Придется перечислить тут весь справочник. Неужели нет способа добраться до значения из справочника или заставить работать функции CAST или CONVERT? Но все равно спасибо, воспользуюсь пока тем, что вы дали.
Если скинете пример справочника, то думаю можно и через cast или convert. Вообще есть и другие варианты, но case это 100% вариант.
 
Благодарю, очень помогли. BYREF - это как раз то, что я искал.
Страницы: 1