SQL условно возвращает историю - PullRequest
0 голосов
/ 19 августа 2010

У меня есть таблица с примечаниями. Он имеет кучу заметок, которые автоматически делают разные вещи в зависимости от того, что кто-то делает в системе.

Когда заказ назначен, он записывает, что «Заказ был назначен на« имя »» Когда заказ перераспределяется, он отмечает, что «Заказ был переназначен на« имя »»

Когда заказ назначается первоначально, он бросает оператор "Заказ был назначен на имя" в примечания.

После этого каждый раз, когда заказ назначается снова, он бросает заказ, который был переназначен.

Проблема, с которой я столкнулся, заключается в том, что если заказ введен в систему тем же лицом, которое назначает его себе, он пропускает право на переназначенную заметку, даже не говоря, что заказ был назначен.

Прямо сейчас в моем состоянии WHEN у меня есть следующее:

WHEN LEFT(n.Text,21) = 'Order was assigned to'

Это в основном возвращает только имя, в котором ордер был обработан в первый раз. Поскольку, если кто-то назначает себе заказ, он пропускает эту заметку, мне нужно заявление, которое делает это, но если нет «Заказ был назначен», мне нужно вернуть первый заказ, переназначенный на заметку. Эти заметки также содержат поле отметки времени вставки аудита в той же таблице. Порядок может быть переназначен много раз, но я хочу, чтобы первый был отмечен только в том случае, если ордеру не было присвоено примечание.

Как бы я это сделал?

Я знаю, что это ужасный дизайн приложения, но я его не проектировал и не могу его изменить. Мне просто нужно знать, как писать SQL.

СПАСИБО !!!

1 Ответ

1 голос
/ 19 августа 2010

Вы можете взять свой текущий запрос и добавить запрос UNION с тем же кодом и несколько другим предложением where.LEFT () будет искать переназначенную заметку, и вы добавите предложение NOT EXISTS, чтобы исключить заказы с соответствующей заметкой из первого запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...