Я работаю над запросом, который предназначен для получения продаж по часам, что он и делает. Тем не менее, в используемой таблице базы данных все временные метки UTC +1
, также для продаж, совершенных в стране с UTC +2
.
Так что я пытаюсь достичь результата, который может быть использован местным бизнес-единицы (параметр устанавливается в зависимости от того, кто просматривает отчет, определит, какую страну / магазин отображать). Поэтому, когда продажи в стране UTC +2
, отметка даты должна быть изменена на +1. Я думаю, что это можно сделать в группе, возможно, используя DATEADD
вместе с условием, которое проверяет название округа. Например, когда страна - «Греция» (в базе данных существует столбец), используйте DATEADD
, чтобы добавить 1 час к отметке времени.
Возможно ли это решение, и если да, то как это делается?
Это GROUP BY
, которое я использую в данный момент:
SELECT
DATEPART(hour, sales.OrderDate) AS Hour,
SUM(CASE WHEN FORMAT(sales.OrderDate, 'yyyy-MM-dd') = Cast(GETDATE() AS date) THEN sales.SALES * (1 + sales.vv / 100) END) AS SALES,
COUNT(DISTINCT (CASE WHEN FORMAT(sales.OrderDate, 'yyyy-MM-dd') = Cast(GETDATE() AS date) THEN sales.OID END) ) AS CUSTOMERS,
MAX(CASE WHEN FORMAT(sv.Date_Time, 'yyyy-MM-dd') = Cast(GETDATE() AS date) THEN sv.CC END) AS VISITORS
FROM
[DW].[Tot_Sales] AS sales
LEFT JOIN [DW].[SV_24M] AS sv ON dateadd(hour, datediff(hour, 0, sales.[OrderDate]), 0) = dateadd(HOUR, 0, sv.Date_Time)
AND sales.SID = sv.SID
WHERE
sales.SID = @Store
AND FORMAT(sales.OrderDate, 'yyyy-MM-dd') > DATEADD(year, - 1, Cast(GETDATE() AS date))
GROUP BY
sales.SID,
DATEPART(hour, sales.OrderDate)
ORDER BY
DATEPART(hour, sales.OrderDate)
Это в столбцах SALES
и CUSTOMERS
это необходимо применить, и они из стол с именем sales
. Вот как выглядит результат:
Resultset
Проблема заключается в том, что продажи и клиенты, произошедшие в 9-й час, фактически произошли в 10-й час в UCT +2
. Данные о посетителях поступают по местному времени (в данном случае UCT +2
), поэтому между посетителями и покупателями существует несоответствие.
Пример набора данных:
Набор данных