2016-11-03 8 views
1

моего запроса, как показано ниже будет получить результат, как на картинкеКак получить значение для данных Min только

SELECT Dept, 
     Item,  
     Month, 
     OpenQty, 
     OpenVal 
FROM StockTransaction 
WHERE year = 2016 and 
     month between 1 and 10 

This is the result from my query above

на самом деле результат я хочу есть только минимальный месяц для каждого отдела и пункта будет содержать openqty и openval значение. Кроме этого, будет выполняться нулевое значение.

enter image description here

как написать запрос, чтобы получить результат как выше картина?

ответ

3

Вы можете использовать оконные функции:

SELECT Dept, Item, Month, 
     (CASE WHEN row_number() over (partition by dept, item order by month) = 1 
      THEN OpenQty ELSE 0 
     END) as OpenQty, 
     (CASE WHEN row_number() over (partition by dept, item order by month) = 1 
      THEN OpenVal ELSE 0 
     END) as OpenVal 
FROM StockTransaction 
WHERE year = 2016 and 
     month between 1 and 10; 
+0

помощь много! tq так много –