Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Испозование функций в запросе
 
 автор: Scorpi   (10.06.2008 в 11:08)   личное сообщение
 
 

Всем доброго времени суток.
Есть запрос
SELECT V_kolvo.koddmto, импорт.Название, импорт.БЕИ, "" AS bei2, V_kolvo.kolvo, "" AS kolvo2, импорт.КодПОб, импорт.НазвПоб, V_kolvo.prim FROM V_kolvo, zayavki, импорт WHERE id_zayav=154 And V_kolvo.id_zayav=zayavki.id And импорт.КодДМТО=V_kolvo.koddmto;
в возвращаемых данных в столбце импорт.БЕИ могут быть разн величины: тонны, метры, кг и т.д.. Сейчас все возвращается в одном столбце импорт.БЕИ, второй bei2 остается пустым.
Собственно вопрос: можно ли заполнять и первый и второй столбец в зависимости от того какая ед измерения указана импорт.БЕИ. Т.е если там "т" или "кг", то значения переносить в bei2 и значение из V_kolvo.kolvo переносить в kolvo2. А если что-либо другое то оставлять как есть в импорт.БЕИ и V_kolvo.kolvo
Вроде как есть функция case, но не знаю как ее применить в данном случае и можно ли...
первонач. итог:
....| м | | 10 | |....
....| т | | 0,3 | |....

а было бы хорошо получить
....| м | | 10 | |....
....| | т | | 0,3 |....

в общем вот так путано, но может кто разберется.
спасибо

  Ответить  
 
 автор: osmor   (10.06.2008 в 11:51)   личное сообщение
 
 


SELECT V_kolvo.koddmto, импорт.Название, 
iif(импорт.БЕИ = 'т' or  импорт.БЕИ = 'кг', импорт.БЕИ,'') as BEI  ,
iif( импорт.БЕИ = 'т' or импорт.БЕИ = 'кг','',импорт.БЕИ) AS bei2,
iif( импорт.БЕИ = 'т' or  импорт.БЕИ = 'кг',V_kolvo.kolvo,0) as kolvo1,
iif(импорт.БЕИ = 'т' or  импорт.БЕИ = 'кг',0,V_kolvo.kolvo) as kolvo2,
импорт.КодПОб, импорт.НазвПоб, V_kolvo.prim 
FROM V_kolvo, zayavki, импорт 
WHERE id_zayav=154 
And V_kolvo.id_zayav=zayavki.id 
And импорт.КодДМТО=V_kolvo.koddmto;

вообще не самое правильное решение. если вдруг появится желание выделить еще какую-то ед.изм. (или набор) в отдельный столбец придется все переписывать.

  Ответить  
 
 автор: Scorpi   (10.06.2008 в 12:54)   личное сообщение
 
 

спасибо огромное! Выделение др. единиц не понадобится, уж точно не в этом случае :-)

  Ответить  
 
 автор: Анатолий (Киев)   (10.06.2008 в 13:22)   личное сообщение
 
 

Можно немного сократить, если, например, вместо:
iif(импорт.БЕИ = 'т' or импорт.БЕИ = 'кг', импорт.БЕИ,'') as BEI
написать
iif(импорт.БЕИ In ('т', 'кг'), импорт.БЕИ,'') as BEI
или так (без 3-го аргумента)
iif(импорт.БЕИ In ('т', 'кг'), импорт.БЕИ) as BEI

В 1-м и 2-м случае при несовпадении условия возвращается пустая строка, а в 3-м - Null.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList