2016-10-27 2 views
0

Ich versuche, eine SQL-Abfrage zu schreiben, um die Differenz zwischen einer Schließung und dem endgültigen Verkauf des Tages für einen bestimmten Ort, pro Tag.Datum Diff zwischen 2 Max Daten, pro Tag über einen bestimmten Zeitraum

Der DB-Schema ist so etwas wie:

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

ich geschrieben habe, die folgenden (Pseudocode):

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) 

Dies gibt den Zeitunterschied zwischen dem endgültigen Verkauf des Tages und der Schließung des Geschäfts zurück, jedoch nur für das letzte Datum (dh das maximale Datum).

Ich bin mir nicht sicher, wie man das maximale Verkaufsdatum pro Tag und die maximale Ladenschlusszeit pro Tag erhält (es gibt Situationen, in denen der Laden mehr als einmal am Tag schließt) und dann den Datiff zwischen den zwei.

Irgendwelche Vorschläge würden geschätzt.

BEARBEITEN: Ich änderte die Abfrage, um Gruppen-by-Klauseln einzuschließen, die mich näher bringen, aber ich erhalte den Unterschied zwischen jedem Ladenverkauf und jeder Geschäftsschlusszeit.

I.e. Geschäft hat 3 Verkäufe über 3 Tage. Ich bin nah dran 1 - Verkauf a, nah 1 - Verkauf b, nah 1 - Verkauf c, nah 2 - Verkauf a, nah 2 -sale b, nah 2 - Verkauf c, nah 3 - Verkauf a, nah 3 - Verkauf b, nah 3 - Verkauf c.

Irgendwelche Ideen?

+0

tun Sie gerade „BY storeID, CAST (saletime als DATE) GROUP“ am Ende zu müssen – Cato

+1

ich denke, dass Sie auch die storeID im Konzern bräuchten. –

+0

@WEI_DBA - ja, fügte nur hinzu - und er konnte CAST (saletime als DATE) in die Auswahl setzen - wird es funktionieren? – Cato

Antwort

0

Bitte versuchen Sie es.

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 
Verwandte Themen