2016-04-11 36 views
0

Her menü öğesi arasında geçen günlük veriler bu kümesinden sipariş verilen bulmak nasıl:nasıl bulunur gün

Select menuItem, Datediff(day, beginDay, endDay) DaysOrdered 
From MealCheckout 
Group By menuItem 
Order By beginDate, endDate 
:

account menuItem  beginDate  endDate 
'123'  'I1'   '2016-01-10' '2016-01-16' 
'145'  'I1'   '2016-03-11' '2016-03-26' 
'156'  'I2'   '2016-02-10' '2016-02-26' 

Ben şimdiye kadar bu sorgu var

Yani çıktı örneğin menuItem I1 için olmalıdır iki kayıt vardır. '2016-01-10' olan ilk kaydın başlangıç ​​tarihini ve ikinci kayıt olan I1 kaydının son tarihinin bitiş tarihini almalı venumaralı son kayıttan endDate değerini almalı ve startDate ve endDate öğelerini bulup çıkar geçen süre. Yukarıdaki sorgu çalışmaz, herhangi bir değer çıkarmaz.

cevap

1

Geçen günleri elde etmek için yalnızca Oracle'daki tarihleri ​​kaldırabilirsiniz. Bu nedenle, Oracle'da bir hata döndürmeniz gerekir; datediff() işlevi yoktur.

+0

Bu doğru soru oldu! Datediff() işlevinin olmadığının farkında değildim. – CapturedTree

1
select menuItem, 
    max(to_date(endDay,'YYYY-MM-DD'))-min(to_date(beginDay,'YYYY-MM-DD')) 
    From MealCheckout 
    Group By menuItem;