2016-10-27 11 views
0

私は、指定された場所の一日あたりの最終日と最終日の差を返すSQLクエリを作成しようとしています。指定された期間に1日あたり最大2つの日付の間の日付差

select max(storeCloseTime), 
max(saleTime), datediff(mi, max(saletime), 
max(storeCloseTime)) as timeDifference, storeID 
from store_closing_table a 
inner join store_sale_table b 
on a.storeid = b.storeid 
group by storeid, convert(date, saletime), convert(date, storeCloseTime) 

:私は、次の(擬似コード)を書いた

Store_Closing_table(storeCloseTime、storeId) store_sale_table(saleTime、storeID)

DBスキーマは次のようなものです最終的な日付(すなわち、最大日付)についてのみ、その日の最終販売と店舗の終了時刻との間の時間差を返す。

1日の最大販売日数と1日の最大店舗閉店時間(店舗が1日に複数回閉鎖する状況があります)を取得する方法がわかりません。二。

何か提案がありがとうございます。

編集:グループ句を追加するようにクエリを修正しました。これにより、私はより近づくようになりましたが、各店舗の販売と各店舗の閉店時間の差が生じています。

I.e. 店舗は3日間で3つの販売をしています。私は近づいています1 - 売却、クローズ1 - 売却b、クローズ1 - 売却c、クローズ2 - 売却a、クローズ2 - 売却b、クローズ2 - 売却c、クローズ3 - 売却a、クローズ3 - 売却b、クローズ3 - 売却c。

アイデア?

+0

あなただけの「storeID BY GROUP、CAST(DATEとしてsaletime)」最後 – Cato

+1

で、私はあなたが同様にして、グループ内storeIDを必要とするだろうと思うだろうする必要があります。 –

+0

@WEI_DBA - はい、ちょうど追加していました - 彼はCAST(DATEとしてのサマータイム)をselectに入れることができましたか? – Cato

答えて

0

これを試してください。

WITH cte 
AS ( 
     select StoreID, 
       CONVERT(DATE, storeCloseTime) AS [Date], 
       max(storeCloseTime) as storeCloseTime, 
       max(saleTime) as SaleTime, 
     FROM Store_closing_table AS a 
     JOIN Store_sale_table AS b ON a.storeid = b.storeid 
     GROUP BY StoreID, CONVERT(DATE, storeCloseTime) 
    ) 
     SELECT StoreID, [Date], StoreCloseTime, SaleTime 
       datediff(mi, saletime, storeCloseTime) as timeDifference 
関連する問題