|
Модераторы: Akina |
|
ohota5476 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.6.2017 Репутация: нет Всего: нет |
Имеется таблица dbo.Abonent, в ней столбец DogovorEndPeriod - дата планируемого окончания договора, столбец DogovorDateCancel - дата досрочного расторжения договора, если таковая имеется (в противном случае значение null).
Необходимо получить столбец с датой реального окончания договора. Т.е. если в DogovorDateCancel значение не null, то берем дату из него, в противном случае - из DogovorEndPeriod. Испробовал множество вариантов, решить задачу не получается. Один из последних приведен ниже:
Выдает ошибку "Не удалось привязать составной идентификатор dbo.Abonent.DogovorDateCancel". Предполагаю, что сам подход изначально не правильный. Буду благодарен за помощь. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 453 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ohota5476 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.6.2017 Репутация: нет Всего: нет |
Спасибо, работает. Также нашел еще один вариант решения данной задачи.
|
|||
|
||||
ohota5476 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.6.2017 Репутация: нет Всего: нет |
Data является реальной датой расторжения договора. Ее необходимо сравнить с датой оплаты PayData. Если дата оплаты меньше даты расторжения договора, то вывести в Dolg значение поля SumDT (выставленный счет), иначе вывести в Dolg это DocKT.SumDT-DocKT.SumKT (выставленный-оплаченный). Пытался набросать типа
Не позволяет сравнить dbo.DocKT.PayDate<Data. К тому же, не знаю, как это лучше к первому запросу прикрутить. Понимаю, что надо много еще чего изучить, но сейчас стоит данная задача, которую необходимо решить. Буду благодарен за помощь. |
||||
|
|||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 453 |
IF - это ветвление выполнения в процедуре. В рамках одного запроса для альтернативной выборки в зависимости от условия следует использовать CASE:
ISNULL - это та же COALESCE, но со строго 2 параметрами. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |