SQL для начала и конца строк данных

#sql #sql-server

Вопрос:

У меня есть следующая таблица: введите описание изображения здесь

и мне было интересно, есть ли SQL-запрос, который дал бы мне начало и конец календарной недели (CW), где значение больше 0. Таким образом, в случае приведенной выше таблицы результат, как показано ниже:

введите описание изображения здесь

Заранее спасибо!

Ответ №1:

Вы можете назначить группу, подсчитав количество нулей, а затем суммировав:

 select article_nr, min(year), max(year)
from (select t.*,
             sum(case when amount = 0 then 1 else 0 end) over (partition by article_nr order by year) as grp
      from t
     ) t
where amount > 0
group by article_nr, grp;
 

Ответ №2:

 select Atricle_Nr, min(Yearamp;CW) as 'Begin(Yearamp;CW)',max(Yearamp;CW) as 'End(Yearamp;CW)' 
from table where Amount>0 group by Atricle_Nr;