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