|
Непонятная конструкция в запросе
| ☑ |
0
jamesgold
06.08.15
✎
22:31
|
Добрый день, прошу помочь!
Помогите понять конструкцию в запросе, добавляется следующее поле:
Запрос.Текст = Запрос.Текст +
" ВЫРАЗИТЬ(ЕСТЬNULL(ПервоначальнаяСтоимостьОС.СуммаОстатокДт, 0) - ЕСТЬNULL(ВЫБОР КОГДА СписокОС.ПорядокПогашенияСтоимости = ЗНАЧЕНИЕ(Перечисление.ПорядокПогашенияСтоимостиОС.НачислениеИзноса) ТОГДА АмортизацияОС.СуммаОстатокДт ИНАЧЕ АмортизацияОС.СуммаОстатокКт КОНЕЦ, 0) КАК ЧИСЛО(15, 2)) КАК ОстаточнаяСтоимость
|";
Может кто-нибудь прокоментировать?
|
|
1
Asmody
06.08.15
✎
22:33
|
Что конкретно непонятно? Все слова известные.
|
|
2
jsmith82
06.08.15
✎
22:33
|
форматнул бы как-нибудь
ВЫРАЗИТЬ
(
ЕСТЬNULL(ПервоначальнаяСтоимостьОС.СуммаОстатокДт, 0)
-
ЕСТЬNULL(
ВЫБОР
КОГДА СписокОС.ПорядокПогашенияСтоимости = ЗНАЧЕНИЕ(Перечисление.ПорядокПогашенияСтоимостиОС.НачислениеИзноса) ТОГДА АмортизацияОС.СуммаОстатокДт ИНАЧЕ АмортизацияОС.СуммаОстатокКт
КОНЕЦ, 0) КАК ЧИСЛО(15, 2)
) КАК ОстаточнаяСтоимость
|
|
3
jsmith82
06.08.15
✎
22:34
|
ну да, всё тут понятно, чо уж
|
|
4
jamesgold
06.08.15
✎
22:36
|
Согласен, так нагляднее)
|
|
5
jamesgold
06.08.15
✎
22:36
|
Спасибо!!!
|
|
6
Asmody
06.08.15
✎
22:38
|
ЕСТЬNULL() возвращает первый аргумент, если он не NULL, иначе - второй аргумент.
Конструкция ВЫБОР ТОГДА ИНАЧЕ КОНЕЦ эквивалентна тернарному оператору ?(,,).
ВЫРАЗИТЬ() - это приведение типа
|
|
7
rsv
06.08.15
✎
23:36
|
(0) аnsi sql 92 . Cse там описан.
|
|
8
rsv
06.08.15
✎
23:37
|
Т.е. Сase
|
|
9
rsv
06.08.15
✎
23:44
|
Выразить он же сильно обрезанный Cast и так далее
|
|
10
jsmith82
06.08.15
✎
23:47
|
(7)(8)(9) а он tsql, думаешь, знает?
|
|
11
rsv
06.08.15
✎
23:50
|
(10) стандарт ANSI держат все субд . Case должны уж точно все держать
|
|