2016-03-11 6 views
-1

Привет, мой нижеприведенный код: У меня разные таблицы, где у меня есть данные. Один материал MYCODE представляет собой соединение различных сырьевых материалов, таких как 01-, 04- и 05-. Для каждого из них я должен узнать последнюю дату (максимальную дату покупки), которая является max (tp_date). ниже - мой код: но на выходе показаны две разные даты для первого материала 01-. Мне нужно только последний, так что строка с датой заказа 2015-04-22 пожалуйста, помогите:Найти максимальную дату заказа

select dmprod.pr_codenum pr_co, dmprod.pr_descrip desc, 
max(dttpur.tp_date) Date, dmfcur.fc_name CURR, 
(select pr_codenum from 
dmprod where dmprod.pr_id=dmbom.bo_bomfor)BOM, 
max(dmrev.re_name) Rev, 
sum(dmbom.bo_quant)*dtpur.pu_price Ext, 
dmunit.un_name mea, 
dtpur.pu_price price from dmbom, dmprod, 
dmrev, dmunit, dttpur, dmfcur, dtpur 
where dmbom.bo_prid=dmprod.pr_id 
and dttpur.tp_fcid=dmfcur.fc_id 
and dmprod.pr_id=dtpur.pu_prid and dttpur.tp_id=dtpur.pu_tpid 
and dmbom.bo_unid=dmunit.un_id 
and dmrev.re_id=dmbom.bo_reid 
and pr_active=1 and (select pr_codenum from dmprod where dmprod.pr_id=dmbom.bo_bomfor)='MYCODE' 
group by pr_codenum, pr_descrip, fc_name,un_name, 
pu_price, bo_bomfor 

и выход:

pr_co des Date  CURR BOM Rev Ext  mea price 
01-  T 2015-04-22 USD MYCODE 01 127  mg  2 
01-  T 2015-02-26 USD MYCODE 01 290  mg  4 
04-  M 2016-01-12 EUR MYCODE 01 300  mg  7 
05-  S 2016-02-25 EUR MYCODE 01 260  mg  4 
+0

Какая СУБД вы используете? –

+0

SQL Server 2008 – Deni

ответ

0

Обратите внимание на различные цены в последнем столбце , Вы указываете pu_price в своем предложении GROUP BY, поэтому он возвращает разные строки для каждой разной цены. Если вы хотите сгруппировать все 01-материалы в одной строке, независимо от цены, просто оставьте pu_price из вашего предложения GROUP BY.

+0

как? если pu_price необходимо показать в списке – Deni

+0

Если вам нужно сгруппировать все 01-материалы в одной строке, независимо от цены, тогда нет логичного способа показать несколько цен в одной строке. Сначала решите, что вы хотите показать, тогда, может быть, мы сможем помочь вам разобраться, как это показать. –

+0

Я перечитываю ваш вопрос, и я вижу, что вы хотите использовать цену с самой последней даты. Я не знаю sql-server достаточно хорошо, чтобы дать надежный ответ, но я бы начал с удаления pu_price из GROUP BY, а затем выполнил суб-запрос, чтобы получить соответствующую цену за самую последнюю дату. К сожалению, я не знаю, как запросить sql-сервер для сопоставимой цены, но я думаю, что это вопрос, который вам нужно задать здесь. (Извините, я неправильно понял ваш вопрос на первом чтении-thru, иначе я бы разместил свой ответ как просто комментарий.) – MarkNFI

Смежные вопросы