Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Статус заказа  [new]
Логин111
Guest
Добрый день, всем.
Кто подскажет.

Необходимо найти заказы которые находятся в статусе не выполнен.

Есть обычная таблица заказов. (Номер, Статус, Дата, Артибуты)
В ней есть поле статус: поступил, одобрен, предоплата, выполнен.
Изменения статуса в рамках одного заказа можно сделать по времени.

А как вывести все не выполненные заказы на момент запроса. ??
9 май 17, 16:07    [20466617]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Select * from OrderTable
Where State !='выполнен'
9 май 17, 16:12    [20466629]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
Aleksey br,

Спасибо за ответ )
Я так пробовал.
Вы понимаете в чем дело, таблица спроектирована так, что заказ в любом статусе(кроме выполнен) не выполнен.
Он и в поступишем статусе не выполнен и в любом другом статусе, кроме выполненного.

То есть так я могу отбрать как раз только выполненные.

Иными словами будут задвои.

Здесь я пытался брать последний статус по дате, но делать это получается только в разрезе заказа. Не додумал эту мысль
9 май 17, 16:19    [20466634]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Логин111,

приведите примерные данные в таблице и какой результат должен получиться.
Легче будет.
9 май 17, 16:23    [20466645]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Select * from OrderTable
Where State !='выполнен'
9 май 17, 17:11    [20466732]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Aleksey br
Select * from OrderTable
Where State !='выполнен'
Ему, небось, нужен статус каждого заказа на заданный момент времени.
Или последний статус каждого заказа...
9 май 17, 17:15    [20466740]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
В таблице у одного заказа может быть несколько статусов(прим. поступил,одобрен,выполнен) и нужно отсеять те, у которых среди всех статусов этого заказа нет "выполнен".
Правильно?
9 май 17, 17:15    [20466741]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Aleksey br
В таблице у одного заказа может быть несколько статусов(прим. поступил,одобрен,выполнен) и нужно отсеять те, у которых среди всех статусов этого заказа нет "выполнен".
Правильно?
Но не все, а по одному, я так думаю.
Однако, было бы лучше, чтобы Логин111 проснулся, наконец.
9 май 17, 17:19    [20466746]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
iap
Aleksey br
В таблице у одного заказа может быть несколько статусов(прим. поступил,одобрен,выполнен) и нужно отсеять те, у которых среди всех статусов этого заказа нет "выполнен".
Правильно?
Но не все, а по одному, я так думаю.
Однако, было бы лучше, чтобы Логин111 проснулся, наконец.
По одной записи на каждый заказ, хотел я сказать
9 май 17, 17:20    [20466750]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,

Тут я.
Пытаюсь получше задачу сформулировать.
9 май 17, 17:22    [20466758]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,

Вы правы. Нужен последний статус каждого заказа.
Где этот статус равен одному из статусов - например принят либо, одобрен.

Нужно отобрать заказы у которых последний статус не выполнен. ( или что бы не путаться например: принят, одобрен )
9 май 17, 17:27    [20466772]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Логин111
iap,

Вы правы. Нужен последний статус каждого заказа.
Где этот статус равен одному из статусов - например принят либо, одобрен.

Нужно отобрать заказы у которых последний статус не выполнен. ( или что бы не путаться например: принят, одобрен )
SELECT TOP(1) WITH TIES *
FROM Заказы З
WHERE NOT EXISTS(SELECT * FROM Заказы ЗЗ WHERE ЗЗ.Номер=З.Номер AND Статус='выполнен')
ORDER BY ROW_NUMBER()OVER(PARTITION BY Номер ORDER BY Дата DESC);
Странно, что вы не ударили даже палец о палец, чтобы ответить на мою просьбу.
Ждёте, когда вам разжуют и в рот положат.
9 май 17, 17:44    [20466812]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,
нет я делаю таблицу и заполняю ее данными

USE [tempdb]
GO

/****** Object: Table [dbo].[Orders1] Script Date: 05/09/2017 17:49:05 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Orders1](
[Номер заказа] [nchar](10) NOT NULL,
[Статус] [nvarchar](50) NULL,
[Название] [nvarchar](50) NULL,
[Дата] [datetime] NULL
) ON [PRIMARY]

GO


Номер заказа Статус Название Дата
1 Принят Заказ1 2016-01-01 00:00:00.000
1 Выполнение Заказ1 2016-01-01 10:00:00.000
1 Закрыт Заказ1 2016-01-01 11:00:00.000


Вот примерно такая таблица
9 май 17, 17:49    [20466822]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,

Не успел...

Спасибо попробую.
9 май 17, 17:50    [20466823]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Логин111,

мой запрос даёт неправильный результат?
9 май 17, 17:50    [20466824]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,

Я сейчас смотрю.
Думаю даст.
Поля переименовываю пока
9 май 17, 17:55    [20466830]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,
Да!!! Правильный результат есть
Спасибо большое )
9 май 17, 17:57    [20466836]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
Логин111
Guest
iap,

А можно как - нибудь сделать что бы он выдавал правильный результат не только сейчас - в момент запуска, но и например на дату месяц назад ?.
9 май 17, 18:01    [20466844]     Ответить | Цитировать Сообщить модератору
 Re: Статус заказа  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31366
Логин111
iap,

А можно как - нибудь сделать что бы он выдавал правильный результат не только сейчас - в момент запуска, но и например на дату месяц назад ?.
Добавьте в WHERE условие по дате.
9 май 17, 20:52    [20467222]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить