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

Откуда: Бердск, НСО
Сообщений: 499
Есть таблица заказов, примерно, следующего вида: OrderId, Amount, CustomerId, и есть таблица состояния заказов, примерно, следующего вида: OrderId, Status, StatusChangedDate. Таблицы связаны через поле OrderId. Заказ может иметь 4 состояния: новый, принят, обслужен и отказ. Можно ли написать такой запрос, чтобы каждому заказу соответствовала ровно одна запись следующего вида:
OrderId, Amount, Customer, NewDate, AcceptDate, CompleteDate, DeclineDate, где NewDate, AcceptDate, CompleteDate, DeclineDate содержат даты поступления заказа, его принятия в работу, выполнения и отказа в заказе соответственно.
Если заказ не имеет какого-то состояния, то в соответствующем поле должен быть NULL.

Я как ни бился, у меня получается несколько записей на один заказ с разными комбинациями значений NewDate, AcceptDate, CompleteDate, DeclineDate.
22 апр 14, 06:19    [15913719]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить таблицы?  [new]
maxapet
Member

Откуда: Бердск, НСО
Сообщений: 499
Да, используется MS SQL 2008.
22 апр 14, 06:25    [15913722]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить таблицы?  [new]
Добрый Э - Эх
Guest
1) PIVOT + CROSS APPLY
2) CASE + GROUP BY
22 апр 14, 06:36    [15913728]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить таблицы?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
maxapet
Можно ли написать такой запрос.


можно
22 апр 14, 12:51    [15915385]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить таблицы?  [new]
SilverVolg
Member

Откуда:
Сообщений: 36
вложенные запросы
22 апр 14, 14:15    [15916039]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить таблицы?  [new]
pina colada
Member

Откуда:
Сообщений: 19
maxapet, сделай так, чтоб таблица статусов заказов приняла вид со следующими полями Order_ID, Status1, Status2, Status3, Status4, используя функцию PIVOT. Значения этой таблицы будут соответственно номера заказов и даты для каждого статуса. А затем свяжи первую и вторую таблицу и каждому заказу будет соответствовать одна запись с разными датами.
28 апр 14, 04:31    [15944205]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить