Запрос. ВЫБОР КОГДА #799019


#0 by first_may
Добрый день. Подскажите пож, можно ли использовать конструкцию в запросе ВЫБРАТЬ    ...    .. ИЗ    .. то есть в одном из полей использовать запрос?
#1 by Лефмихалыч
нет. ВЫБОР применяется к каждой строке выборки
#2 by elCust
Че за ерунда, можно канечно. Обычная конструкция SELECT CASE
#3 by first_may
Пробую написать в конструкторе в поле ВЫБОР     КОГДА         ТОГДА     КОГДА ЕСТЬNULL(выбрать 1 из истина, ЛОЖЬ) = ИСТИНА ругается на то, что синтаксическая ошибка и "ожидается выражение выбрать"..
#4 by Лефмихалыч
почитай топик внимательно. в КОГДА так нельзя
#5 by elCust
Может я неправильно понял тебя)) Вот как ты написал в примере правильно сказано в .
#6 by first_may
То есть селект в поле нельзя?
#7 by dezss
конечно нельзя, делай соединение и тогда уж проверяй в своем "когда".
#8 by Неверный Параметр И
> выбрать 1 из истина Эта чо?
#9 by НЕА123
это толпа единичек. колво= колво записей ВТ истина. я так думаю (с)
#10 by apokrit
Нельзя Ни где нельзя, не только в поле. Можно только IN (SELECT)
#11 by elCust
Давай обратимся к матчасти: В качестве описания поля выборки может быть выражение, использующее следующие элементы: Литералы типов: число, строка (в кавычках), булево (значения Истина и Ложь), Null, Неопределено. [Замечание: Чтобы указать литерал типа "дата", можно воспользоваться ключевым словом языка запросов ДАТАВРЕМЯ или передать дату через параметр запроса]. Параметры запроса (со знаком &) Имя поля Имя табличной части Разыменование ссылочного поля (через одну или несколько точек) Арифметические операции (+, -, /, *) [Замечание: операция получения остатка % в языке запросов не поддерживается] Операция конкатенации строк (+) [Замечание: операцию конкатенации нельзя использовать для виртуальных полей] Встроенные функции языка запросов (ДЕНЬ, МЕСЯЦ, ГОД и т.д.) Агрегатные функции (СУММА, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО) Операция выбора ВЫБОР / CASE - позволяет получить одно из возможных значений в соответствии с указанными условиями. Операция приведения типов ВЫРАЗИТЬ / CAST
#12 by first_may
"Можно только IN (SELECT)" - то есть, что то вроде этого ВЫБОР     КОГДА ??
#13 by elCust
>> КОГДА ИСТИНА В (ВЫБРАТЬ .. ИЗ ..) Низя так
#14 by Неверный Параметр И
Можно
#15 by Неверный Параметр И
КОГДА ИСТИНА В (ВЫБРАТЬ ИСТИНА ИЗ РегистрСведений.РегистрСведений1) ТОГДА "Пыщь"
#16 by first_may
например?
#17 by first_may
КОГДА ИСТИНА В             ИЗ
#18 by Неверный Параметр И
Тебе точно нужна логика "когда в регистре версий подситем есть записи, тогда максимум сумм" (:
#19 by first_may
спасибо всем, дальше буду думать сам..
#20 by first_may
будет конечно не РегистрСведений.ВерсииПодсистем, заменю на то, что мне надо. Главное логика мне понятна. Спасибо.
#21 by youalex
Интересно. Всегда думал что можно. Попробовал - и правда можно: ВЫБРАТЬ ВЫБОР КОГДА 1 = 0 ТОГДА 0 КОГДА 1 В (ВЫБРАТЬ 1) ТОГДА 99 КОГДА 0 = 0 ТОГДА 1 КОНЕЦ работает.
#22 by first_may
я то же где то раньше видел, а как правильно писать не отложилось в голове :).
#23 by h-sp
непонятно что с чем сравниваешь       КОГДА (ВЫБРАТЬ                .. выборка же не может равняться истине. Она же не логическое выражение, а выборка.
#24 by first_may
условие такое надо КОГДА ИСТИНА В             (ВЫБРАТЬ                 ИСТИНА             ИЗ
#25 by youalex
Да. вложенный должен возвращать один ряд значения (одну колонку), тогда можно использовать условие IN
#26 by youalex
upd. Удобно кстати, когда нужно использовать EXISTS (которого в 1С нет), тогда просто 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Таблица)
#27 by first_may
Да, да. Согласен :).
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям