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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2013, 08:59   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию Группировка в запросе

Люди помогите!
В таблице есть колонка с подобными номерами: AM5T-14D212-AB, BB53-78402A74-AD3. Т.е. в любом случае есть 2 "-".
Мне надо сделать запрос чтобы в колонке стояли номера: 14D212, 78402A74. Т.е. цифры между тире. Как написать такую функцию в запросе или в построителе выражений?
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 08.08.2013, 09:26   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Допустим поле называется Shifr,
тогда тот текст, что расположен между дефисами можно получить таким кодом:
Код:
SELECT   IIF(instr(shifr, '-')>0,  MID(shifr,  instr(shifr, '-')+1, inStr( MID(shifr,  instr(shifr, '-')+1),'-') -1 ), "-")
FROM Таблица1;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2013, 12:46   #3
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

в запросе добавил колонку, в поле прописал
groop: SELECTIIF(instr([F1], '-')>0, MID([F1], instr([F1], '-')+1, inStr(MID([F1], instr([F1], '-')+1),'-') -1 ), "-") , где F1 та самая колонка, в этом же запросе. Пишет - ошибка синтаксиса. Что не так?
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 08.08.2013, 13:45   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, пробел после select потеряли
во-вторых, првильно писать group
в-третьих, при чём здесь вообще group by - то бишь ГРУППИРОВКА ?! я же написал как выделить часть между дефисами и только!
в-чётвёртых, предложенный мною текст является текстом запроса SQL - его не надо ни в какие колонки писать - перейдите в режим SQL, введите мой текст запроса (заменив поле на F1) - получите результат.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2013, 13:59   #5
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в-третьих, при чём здесь вообще group by - то бишь ГРУППИРОВКА ?! я же написал как выделить часть между дефисами и только!
у меня есть таблица с различными номерами. Теперь надо сделать отчет с группировкой столбца (цифры между тире)
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 08.08.2013, 14:06   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так устроит?

Код:
select Нужные_Агрегатные_функции,  CIFRY
(  select <нужные поля>, 
      IIF(instr([F1], '-')>0,  
         MID([F1],  instr([F1], '-')+1, inStr( MID([F1],  instr([F1], '-')+1),'-') -1 ), "-") as CIFRY
   from ВашаТАблица) 
group by  CIFRY
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2013, 14:36   #7
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

мой изначальный код простой
SELECT [all Запрос].F1, [all Запрос].F2, [all Запрос].F5, [all Запрос].F6, [all Запрос].F7, [all Запрос].F15, [all Запрос].F21, [all Запрос].F22, [all Запрос].F23
FROM [all Запрос];
подставлял ваш код по разному, не получается )
Да и Нужные_Агрегатные_функции вообще не понимаю что это
Хотя этот запрос отрабатывает
SELECT IIf(instr(F1,'-')>0,MID(F1,instr(F1,'-')+1,inStr(MID(F1,instr(F1,'-')+1),'-')-1),"-")
FROM [all Запрос];
уже лучше )
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 08.08.2013 в 14:42.
Iskin вне форума Ответить с цитированием
Старый 09.08.2013, 07:40   #8
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Теперь ситуация еще сложнее.
колонка с подобными номерами: AM5T-14D212-AB, BB53-78402A74-AD3, а так же номера RRT34-VM45, B34T8-RT, т.е. есть 2 "-" или одно. Надо сделать запрос для колонки, где будет 14D212, 78402A74, RRT34, B34T8 и т.д.
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 09.08.2013, 09:25   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не проблема.

проверяйте:
Код:
SELECT [F1], 
IIf(instr([F1],'-')>0,
  IIF(inStr(MID([F1],instr([F1],'-')+1),'-')>0,
      MID([F1],instr([F1],'-')+1,inStr(MID([F1],instr([F1],'-')+1),'-')-1),
      MID([F1],1,instr([F1],'-')-1)),
  "-")
FROM Таблица1;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.08.2013, 04:57   #10
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

ага, все работает)
Еще раз спасибо... за тех. поддержку)
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Группировка hata77 Microsoft Office Excel 3 18.10.2012 12:15
Группировка в SQL запросе wm_leviathan SQL, базы данных 8 09.03.2010 13:36
Группировка Pretorianec79 Microsoft Office Excel 2 19.01.2010 14:36
группировка Мингиян Microsoft Office Excel 2 23.04.2008 23:43
Группировка SveSve Microsoft Office Excel 3 21.03.2008 11:50