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

Откуда:
Сообщений: 356
Здравствуйте
Ситуация:
1 таблица) есть пресса, они содержатся в таблице список оборудования (oborud) со своим уникальным заводским номером (zavod_numb) и типом оборудования, ну что это всёж таки пресс(typeobor)
2 таблица) выписываются сменные задания (SMENTASK) каждый день (datetask - дата формирования сменного задания) со своим уникальным номером (vcode)
3 таблица) (V_SMENTASKSPECS) спецификация для каждого сменного задания, где прописано на каком прессе сколько деталей изготовлено по факту (QUANT_FACT), так же есть уникальный номер (pcode), в системе продумана связ между подобными документами vcode=pcode, и для одного vcode может быть много pcode (связь с таблицей SMENTASK)
4 таблица) есть акты выхода из строя оборудования (V_aktvihod), не только прессов, но пресса там то же есть, в которых указанно какой пресс (zavod_numb) и когда (timeost) был сломан, так же есть уникальный код (vcode) идентифицирующий именно этот акт
5 таблица) есть акты ввода в эксплуатацию (V_aktvvoda), который формируется из акта выхода из строя оборудования, и должен быть только один акт ввода для только одного акта выхода, связь по полю (V_aktvvoda.vcode_ABC=V_aktvihod.vcode), в этой таблице есть дата пуска конкретного пресса (zavod_numb) в работу (peredano)
Задача:
найти все простаивающие пресса и (если есть) за определённый промежуток времени, основания их простоя (акты выхода из строя в связке с актами ввода в эксплуатацию, если есть такие, если нет таковых, то выводить сообщение - 'В ремонте'!)

случаи: нужно предусмотреть ситуации когда пресс за определённый период вообще не работал и акт был сформирован чёрт знает когда,
если он в этот день поработал час был сломан и потом снова работал, то всё равно выводить вместе с актами
выводить акт ввода, если он был сформирован за долго после окончания выбранного интервала
вывод примерно такой:
№пресс | сколько сделал (если ничего, то 0) | дата выхода из строя | основание (акт выхода из строя) | дата ввода в эксплуатацию (если есть) | основание (акт ввода в эксплуатацию, если есть)


Для случая когда акт выхода за пределами выбранного отрезка, в середине отрезка чуть чуть поработал и сейчас в ремонте по сей день:
отрезок between '20140101' and '20140328'
№ 21 | 13 | 20131225 | акт выхода из строя | 20140223  | акт ввода в эксплуатацию | 
№ 21 | 15 | 20140325 | акт выхода из строя | В ремонте |                          | 
№660 |  0 |          |                     |В ремонте  |                          |(этот купили сломанный)
№17  | 0  | 20140101 | акт выхода из строя | 20140328  | акт ввода в эксплуатацию |
№10  |256 | 20140301 | акт выхода из строя |В ремонте  |                          |
№11  | 343| 20140328 | акт выхода из строя |20140328   | акт ввода в эксплуатацию |


Поможите пожалуйста
1 апр 14, 06:06    [15814150]     Ответить | Цитировать Сообщить модератору
 Re: Задача на пресса  [new]
Добрый Э - Эх
Guest
уже лучше. но никто не будет вместо тебя набивать тестовые данные для всех твоих пяти таблиц...
если ожидаешь помощи в виде готового запроса, то предоставь все необходимые для этого данные.
скрипты создания таблиц не обязательны, достаточно эмуляции в виде:
with 
  t1 as (...),
  t2 as (...),
   ...
  t5 as (...)
1 апр 14, 08:04    [15814211]     Ответить | Цитировать Сообщить модератору
 Re: Задача на пресса  [new]
R-Magistr
Member

Откуда:
Сообщений: 356
Добрый Э - Эх
уже лучше. но никто не будет вместо тебя набивать тестовые данные для всех твоих пяти таблиц...
если ожидаешь помощи в виде готового запроса, то предоставь все необходимые для этого данные.
скрипты создания таблиц не обязательны, достаточно эмуляции в виде:
with 
  t1 as (...),
  t2 as (...),
   ...
  t5 as (...)

Ок, сделаем
1 апр 14, 08:11    [15814218]     Ответить | Цитировать Сообщить модератору
 Re: Задача на пресса  [new]
R-Magistr
Member

Откуда:
Сообщений: 356
Добрый Э - Эх,

Возник вопрос, как экспортировать таблицы из БД, что бы вам их передать для тестов?
У меня MSSQL 2005
4 апр 14, 07:25    [15830942]     Ответить | Цитировать Сообщить модератору
 Re: Задача на пресса  [new]
aleks2
Guest
R-Magistr
Добрый Э - Эх,

Возник вопрос, как экспортировать таблицы из БД, что бы вам их передать для тестов?
У меня MSSQL 2005


Давай лучче прямой доступ к серверу - те помогут... его завалить.
4 апр 14, 07:50    [15830966]     Ответить | Цитировать Сообщить модератору
 Re: Задача на пресса  [new]
aleks2
Guest
-- Магистранты ничем не лучче бакалавров. Неучи.
-- Задача:
-- найти все простаивающие пресса и (если есть) за определённый промежуток времени, основания их простоя (акты выхода из строя в связке с актами ввода в эксплуатацию, если есть такие, если нет таковых, то выводить сообщение - 'В ремонте'!)
declare @start datetime = '20120101', @stop datetime = '20130101'


with
--1. Все периоды НЕработы
    --4 таблица) есть акты выхода из строя оборудования (V_aktvihod), не только прессов, но пресса там то же есть, в которых указанно какой пресс (zavod_numb) и когда (timeost) был сломан, так же есть уникальный код (vcode) идентифицирующий именно этот акт
    --5 таблица) есть акты ввода в эксплуатацию (V_aktvvoda), который формируется из акта выхода из строя оборудования, и должен быть только один акт ввода для только одного акта выхода, связь по полю (V_aktvvoda.vcode_ABC=V_aktvihod.vcode), в этой таблице есть дата пуска конкретного пресса (zavod_numb) в работу (peredano)
allfailperiods as
( select vi.zavod_numb, vi.timeost, isnull(vv.peredano, '30000101') as peredano
    from V_aktvihod vi left outer join V_aktvvoda vv on vv.vcode_ABC = vi.vcode
)
,
-- 2. Интересующие нас периоды НЕработы
failperiods as
( select * from allfailperiods where @start <= peredano and timeost <= @stop
)
-- 3. Прихерачить сюда прессы и фсе остальное - проще пареной репы.

-- Учись, студент.
4 апр 14, 08:11    [15830988]     Ответить | Цитировать Сообщить модератору
 Re: Задача на пресса  [new]
R-Magistr
Member

Откуда:
Сообщений: 356
aleks2,

да решил уже, мысли примерно в том же направлении, описывать долго там все условия ))))) Спасибо всем )))
4 апр 14, 13:16    [15832696]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить