2015-03-21 5 views
0

Невозможно написать Sql для моей проблемы. У меня есть таблица с 2-мя столбцами и кодом срока действия.Группа по одному столбцу и подстроке собственных

Itemcode.  Expiration 
Abc123.   2014-08-08 
Abc234.   2014-07-07 
Cfg345.   2014-06-06 
Cfg567.   2014-07-08 

Выходные данные должны быть основаны на первых 3-х цифр кода товара и минимальной даты expirarion как ниже

Abc.  2014-07-07. Abc234 
Cfg.  2014-06-06. Cfg345 

Благодарности

EDITED: Запрос идет как это, который на самом деле является присоединение множественным таблицы для извлечения кода элемента и истечения срока действия. выберите зиЬзЬг (y.itemcode, 1,3), мин (x.expiration_date) истечение, y.itemcode
из X X, Y, где у y.id = x.id

      and x.number in 
           (select number from xyz 
           where id = x.id 
           and codec in ('C', 'M', 'T', 'H') 

           ) 

           group by substr(y.itemcode,1,3), y.itemcode 
+0

Показать Ваш код. Что вы уже пробовали? –

+0

Я не могу понять. Я использовал предложение group by, но мне нужна и подстрока, и код элемента, поэтому использование группы не помогает. Пожалуйста помоги. –

ответ

0

Я не знаком с «м». Вот стандартное SQL-решение ANSI:

select substring(itemcode, 1, 3), expiration, itemcode 
from (select t.*, 
      row_number() over (partition by substring(itemcode, 1, 3) 
           order by expiration desc 
           ) as seqnum 
     from table t 
    ) t 
where seqnum = 1; 

Большинство баз данных поддерживают эту функциональность. У некоторых могут быть несколько разные имена (например, substr() или left() для операции подстроки).

+0

HI Gordon Я изменил свой вопрос и предоставил точный запрос. Мне нужна ваша помощь, так как я не могу ее поместить. Он объединяет 2 таблицы для извлечения данных. Пожалуйста помоги. –

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