powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Расчёт
25 сообщений из 38, страница 1 из 2
Расчёт
    #39567653
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парни, никак не могу написать запрос про такую постановку, есть варианты с чего начать?

"авторПо инвентарному номеру найти все записи, когда была выполнена модернизация (т.е. Zdfar202.amnm<>0),
при этом
year=2017
year=2017 - 1
В этих записях найти минимальную «по дате» запись и взять из этой записи значение amna, т.е. берем сумму амортизации без учета последующих модернизаций."

Лучше кейсом реализовывать или просто where?
...
Рейтинг: 0 / 0
Расчёт
    #39567658
Фотография Foxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonПарни, никак не могу написать запрос про такую постановку, есть варианты с чего начать?

"авторПо инвентарному номеру найти все записи, когда была выполнена модернизация (т.е. Zdfar202.amnm<>0),
при этом
year=2017
year=2017 - 1
В этих записях найти минимальную «по дате» запись и взять из этой записи значение amna, т.е. берем сумму амортизации без учета последующих модернизаций."

Лучше кейсом реализовывать или просто where?

Начни хоть как-то ))
...
Рейтинг: 0 / 0
Расчёт
    #39567671
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,

Код: plsql
1.
select * from table t1 join (select min(«по дате») as «по дате», инвентарный_номер from table t2 where amnm <> 0 and (year = 2017 or year = 2017-1) group По инвентарному номеру) t2 on t1.«по дате» = t2.«по дате» and t1.инвентарный_номер = t2.инвентарный_номер
...
Рейтинг: 0 / 0
Расчёт
    #39567676
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

Так-с, спасибо большое буду пробовать.
...
Рейтинг: 0 / 0
Расчёт
    #39567689
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

Привёл в данный вид, но коечто из вашей подсказки непонятно. Это оператор "ON" и две последних строки. У меня данные берутся из 1 таблицы.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * 
    from baan.tzdfar202001 
    join (select min(t$year) as data
                ,t$fasc
    from baan.tzdfar202001 
    where amnm <> 0 and (year = 2017 or year = 2017-1) 
    group by t$fasc) 
    t2 on t1.«по дате» = t2.«по дате» 
    and t1.инвентарный_номер = t2.инвентарный_номер
...
Рейтинг: 0 / 0
Расчёт
    #39567707
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
--наше
WITH Zdfar202 AS
 (SELECT 1 AS ID, 2016 AS YEAR, 1 AS amnm, 1000 AS amna,
         to_date('10.07.2017', 'DD.MM.YYYY') AS date_mod
    FROM dual
  UNION
  SELECT 2 AS ID, 2015 AS YEAR, 0 AS amnm, 10000 AS amna,
         to_date('12.01.2017', 'DD.MM.YYYY') AS date_mod
    FROM dual
  UNION
  SELECT 3 AS ID, 2017 AS YEAR, 1 AS amnm, 5000 AS amna,
         to_date('19.02.2017', 'DD.MM.YYYY') AS date_mod
    FROM dual)
--ваше 
SELECT *
  FROM (SELECT t.amna,
               t.date_mod
          FROM Zdfar202 t
         WHERE t.YEAR IN (2016, 2017)
           AND t.amnm <> 0
         ORDER BY t.date_mod)
 WHERE ROWNUM = 1
...
Рейтинг: 0 / 0
Расчёт
    #39567720
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шК0ДЕР,

Сделал вот так, но переменная t$date - это дата коп. в архив. Переделал запрос вот так:

SELECT *
FROM (SELECT t$amna,
t$date
FROM baan.tzdfar202001
WHERE t$YEAR IN (2016, 2017)
AND t$amnm <> 0
ORDER BY t$date)
WHERE ROWNUM = 1

Результат выдаёт, но я не уверен, что это правильно. Плюс в конструкции IN вы взяли конкретные два года - это правильно по моей постановке. Но в полной постановке это динамические поля, которые равны дате ввода в моей программе.
...
Рейтинг: 0 / 0
Расчёт
    #39567724
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плюс мне ещё надо взять минимальную дату за модернизацию. Это вроде вы не указали.
...
Рейтинг: 0 / 0
Расчёт
    #39567726
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * 
    from (select min(t$year) over (partition by t$fasc order by t$fasc) as year
                ,min(t$prod) over (partition by t$fasc order by t$fasc) as prod
    from baan.tzdfar202001 
    where 
    t$amnm <> 0 and 
    t$year = '2017' and 
    t$year = 2017-1 
    ) 



Но данные вообще не выводит.
...
Рейтинг: 0 / 0
Расчёт
    #39567728
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonРезультат выдаёт, но я не уверен, что это правильно. Плюс в конструкции IN вы взяли конкретные два года - это правильно по моей постановке. Но в полной постановке это динамические поля, которые равны дате ввода в моей программе.
Каков вопрос - таков ответ. Вы не указали структуру таблиц, лишь схематично обрисовав ситуацию. Вот и я схематично накидал для того, чтобы ответить на вопрос:
Tihiy_Don есть варианты с чего начать?

Tihiy_DonЭто вроде вы не указали.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *
  FROM (SELECT t$amna,
               t$date
          FROM baan.tzdfar202001
         WHERE t$YEAR IN (2016, 2017)
           AND t$amnm <> 0
         ORDER BY t$date /*здесь сортировка по дате*/)
 WHERE ROWNUM = 1/*выборка первой строки, т.е. с минимальной датой*/



Вы запрос хоть выполняли у себя?))
...
Рейтинг: 0 / 0
Расчёт
    #39567729
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don
Код: sql
1.
2.
t$year = '2017' and 
    t$year = 2017-1 

Но данные вообще не выводит.Не мудрено.
...
Рейтинг: 0 / 0
Расчёт
    #39567735
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шК0ДЕР,

Всё верно, поэтому я и говорю что я доконца не сказал полную постановку. По тому что я написал Вы верно мне решение дали, за функцию ROWNUM спасибо, почитал как она работает и как Вы её здесь реализовываете это то что мне подходит.

Elic , а что не мудрено, что-то не так записал?
...
Рейтинг: 0 / 0
Расчёт
    #39567736
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос конечно же у себя выполнял. Вот проблема с записью 2017 - 1. Из-за неё не выводит наверное.
...
Рейтинг: 0 / 0
Расчёт
    #39567739
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonЗапрос конечно же у себя выполнял. Вот проблема с записью 2017 - 1. Из-за неё не выводит наверное.

А что мешает указать 2016? Или в базе прямо так и хранится "2017 - 1"?
...
Рейтинг: 0 / 0
Расчёт
    #39567744
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шК0ДЕР,

При указании просто 2016, тоже данные не выводит - это я уже пробовал. Всё же, большое спасибо за помощь. Я несомненно продвинулся)
...
Рейтинг: 0 / 0
Расчёт
    #39567745
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Donа что не мудрено, что-то не так записал?С логикой совсем не в ладах?
...
Рейтинг: 0 / 0
Расчёт
    #39567748
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Я понимаю, что это будет равно 2016. Просто я так писал бы в процедуре, поэтому хотел отразить так же в запросе, можно было бы не вытрепаться и сказать нормально - мол напишите вот сразу конечный итог.
...
Рейтинг: 0 / 0
Расчёт
    #39567753
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonЯ понимаю, что это будет равно 2016. Просто я так писал бы в процедуре, поэтому хотел отразить так же в запросе, можно было бы не вытрепаться и сказать нормально - мол напишите вот сразу конечный итог.Чудак, ты что такое "логическое И" понимаешь?
...
Рейтинг: 0 / 0
Расчёт
    #39567758
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Слышишь ты, на оскорбления не переходи. Диванный аналитик, нечего делать - уйди из темы.
Да, понимаю. У меня оно написано в постановке.
...
Рейтинг: 0 / 0
Расчёт
    #39567765
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicTihiy_DonЯ понимаю, что это будет равно 2016. Просто я так писал бы в процедуре, поэтому хотел отразить так же в запросе, можно было бы не вытрепаться и сказать нормально - мол напишите вот сразу конечный итог.Чудак, ты что такое "логическое И" понимаешь?

Elic - как то у Вас терпения прибавилось, 3-й коммент по одной проблеме, но еще в рамках приличия наверно понедельник сказывается.

Tihiy_Don - Вам предлагаю подумать над первым постом Elicа. Он ,обычно, показывает все в первом посте ...
...
Рейтинг: 0 / 0
Расчёт
    #39567779
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,

Скорее всего нужно реализовывать эти года через конструкцию Case я думаю. Но с реализацией пока не могу допереть.
...
Рейтинг: 0 / 0
Расчёт
    #39567784
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonMaximaXXL,

Скорее всего нужно реализовывать эти года через конструкцию Case я думаю. Но с реализацией пока не могу допереть.

Скорее всего нужно реализовывать эти года как делали Dshedoo и шК0ДЕР пытаясь Вам помочь, потому что от Вашего кода повеевеат полным непониманием where clause.
...
Рейтинг: 0 / 0
Расчёт
    #39567787
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicTihiy_DonЯ понимаю, что это будет равно 2016. Просто я так писал бы в процедуре, поэтому хотел отразить так же в запросе, можно было бы не вытрепаться и сказать нормально - мол напишите вот сразу конечный итог.Чудак, ты что такое "логическое И" понимаешь?
Это котамортизация Шредингера - она с 50% вероятностью была в 2017 и в 2017-1 годах (ну а деньги в таких случаях в черную дыру квантовым прыжком переходят)

Regards

Maxim
...
Рейтинг: 0 / 0
Расчёт
    #39567793
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,
Предоставьте структуру таблицы и пример данных, которые там находятся.
А то эта игра в угадайку мало к чему приведет. Может там и нет данных по какому то году, но вы их упорно ищите :)
...
Рейтинг: 0 / 0
Расчёт
    #39567795
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По тому году они есть, я посмотрел. У меня в постановке так и написано:

авторПо инвентарному номеру найти все записи, когда была выполнена модернизация (т.е. модерниз.<>0),
при этом
year= ||год, ук.на форме запроса||
и year= ||год, ук.на форме запроса|| - 1
В этих записях найти минимальную «по дате» запись и взять из этой записи значение amna, т.е. берем сумму амортизации без учета последующих модернизаций.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Расчёт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]