Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2015, 20:11   #1
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию перевод единиц

Привет всем)
есть бд где есть числа тысячи и миллионы.
Нужно составить условие типа
Код:
if adoquery.fieldbyname('field1').asinteger>999 then
//все значения делить на 1000;
if adoquery.fieldbyname('field1').asinteger>999999 then
//все значения делить на 1000000;
теперь вопрос: как составить sql-запрос?
спасибо.
Ernest027 вне форума Ответить с цитированием
Старый 24.08.2015, 20:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Например:
Код:
case
 when Field1>99 then Field1/1000
 when Field1>999999 then Field1/1000000
 else Field1
end Field1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.08.2015, 20:16   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

См. case или iif если access
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.08.2015, 20:19   #4
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

ms sql, спасибо,попробую
Ernest027 вне форума Ответить с цитированием
Старый 24.08.2015, 20:43   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
case или iif если access
DECODE() вроде еще есть...
Цитата:
ms sql
CASE вполне.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2015, 11:50   #6
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Код:
  with ADOQuery1 do
  begin
  SQL.Clear;
  sql.Add('select * case when d>999 then d/1000');
  ExecSQL;
  SQL.Add('select * from Vibration');
  Open;
ошибка в синтаксисе рядом с выражением 'case'
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 11:51   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Почитай справку по кейсу и все станет понятно. Заодно по методам ExecSQL и Open
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.08.2015, 11:54   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Почитай справку по кейсу и все станет понятно. Заодно по методам ExecSQL и Open
+1


должно быть ПРИМЕРНО так:

Код:
with ADOQuery1 do 
begin
  SQL.Clear;
  SQL.Add('select Vibration.*, case when d>999 then d/1000 else d end as MyField from Vibration');
  Open;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.08.2015, 12:33   #9
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

сделал как вы показали и понял что немного не то спросил)))
нужно при помощи sql запроса найти в поле самое большое число и проверить его по условию: если оно больше 999 то все числа в поле делить на 1000, если 999999 то все числа делить на 1000000.
спасибо.
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 13:06   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну если запросом например так:
Код:
select Vibration.*, case when (select max(d) from Vibration)>999 then d/1000 else d end as MyField from Vibration
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование единиц измерения Zirat Microsoft Office Excel 9 29.11.2022 21:14
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
Конвертер денежных единиц vmilyoshin Помощь студентам 6 16.04.2010 11:07
Найти сумма единиц Bayram_662 Паскаль, Turbo Pascal, PascalABC.NET 6 22.10.2009 22:11